objective-c - 从字符串创建代码质询(base64 编码,sha 256 ascii)
问题描述
对于 oauth2 登录过程中使用的一些代码挑战,我需要执行以下操作:
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
如何从 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]);
}
解决方案
推荐阅读
- python-3.x - 亚马逊
使用 python 3、请求和 bs4 进行网络抓取
- android - SwitchPreference 在首选项屏幕上以比其他首选项类型更小的字体大小显示
- cordova - 在 ionic 3 中访问全局值
- unreal-engine4 - UE4 BP 无法让球粘在玩家脚上
- c++ - 带有 enable_if 外部类原型的模板类构造函数定义
- c++ - 迭代和比较地图中的值
> C++ - odoo - Change button to red
- ios - 存储在 NSString 中的 SOAP 响应需要被解析
- listview - 在本机反应中显示卡组件之外的弹出对话框
- cluster-computing - Artemis 集群消息重新分发似乎不起作用