Objective c 从字符串创建代码质询(base64编码,sha 256 ascii)

Objective c 从字符串创建代码质询(base64编码,sha 256 ascii),objective-c,Objective C,对于oauth2登录过程中使用的一些代码挑战,我需要执行以下操作: code_challenge=BASE64URL-ENCODE(SHA256(ASCII(code_验证器))) 如何从包含在code_verifier中的随机字符串执行此操作 更新:你能检查一下这是否正确吗?还是有些东西不必要/不推荐?我实际上并不知道我在这里做什么,我只是从各地复制代码来解决它 - (NSString *)createCodeChallengeWithVerifier:(NSString *)codeVeri

对于oauth2登录过程中使用的一些代码挑战,我需要执行以下操作:

code_challenge=BASE64URL-ENCODE(SHA256(ASCII(code_验证器)))

如何从包含在code_verifier中的随机字符串执行此操作

更新:你能检查一下这是否正确吗?还是有些东西不必要/不推荐?我实际上并不知道我在这里做什么,我只是从各地复制代码来解决它

- (NSString *)createCodeChallengeWithVerifier:(NSString *)codeVerifier {
    //Create ASCII
    const char *asciiString = [codeVerifier cStringUsingEncoding:NSASCIIStringEncoding];

    //Sha256
    unsigned char buf[CC_SHA256_DIGEST_LENGTH];
    CC_SHA256(asciiString, strlen(asciiString), buf);

    NSMutableString * shaString = [NSMutableString stringWithCapacity:(CC_SHA256_DIGEST_LENGTH * 2)];
    for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; ++i) {
        [shaString appendFormat:@"%02x", buf[i]];
    }

    //Base 64 encode
    NSData *dataFromShaString = [shaString dataUsingEncoding:NSUTF8StringEncoding];
    return([dataFromShaString base64EncodedStringWithOptions:0]);
}
-(NSString*)createCodeChallengeWithVerifier:(NSString*)codeVerifier{
//创建ASCII码
const char*ascistring=[codeVerifier cStringUsingEncoding:nsascistringEncoding];
//Sha256
无符号字符buf[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(ASCISTRING、strlen(ASCISTRING)、buf);
NSMutableString*shaString=[NSMutableString stringWithCapacity:(CC_SHA256_DIGEST_LENGTH*2)];
对于(int i=0;i
我希望您能在这个链接中找到答案-我认为在应用base64之前,您不必转换为十六进制字符串(
shaString
)。