当前位置: 首页 > wzjs >正文

wordpress密码阅读苏州seo

wordpress密码阅读,苏州seo,深圳网站建设托管,网站需备案本文介绍如何在 iOS/macOS 下将私钥加载为 SecKeyRef,涵盖 PEM 格式的 ECC 密钥读取、X9.63 数据构建、以及与 Keychain 的集成。 1. 使用 SecKeyCreateWithData 加载私钥 Apple 提供的 SecKeyCreateWithData 方法可以直接将密钥数据加载为 SecKeyRef 对象。 SecK…

本文介绍如何在 iOS/macOS 下将私钥加载为 SecKeyRef,涵盖 PEM 格式的 ECC 密钥读取、X9.63 数据构建、以及与 Keychain 的集成。


1. 使用 SecKeyCreateWithData 加载私钥

Apple 提供的 SecKeyCreateWithData 方法可以直接将密钥数据加载为 SecKeyRef 对象。

SecKeyRef SecKeyCreateWithData(CFDataRef keyData, CFDictionaryRef attributes, CFErrorRef  _Nullable *error);

文档:SecKeyCreateWithData(::_😃 | Apple Developer Documentation

attributes 必须包含如下 key

  • kSecAttrKeyType:密钥类型,如 ECC、RSA
  • kSecAttrKeyClass:密钥类(公钥/私钥)

keyData 的数据格式

  • ECC 私钥数据应采用 X9.63 格式。
  • RSA 私钥应为 PKCS #1 格式。

详见:SecKeyCopyExternalRepresentation(:😃 | Apple Developer Documentation

X9.63 格式说明

  • ECC 公钥:04 || X || Y
  • ECC 私钥:04 || X || Y || K
    其中 X、Y 为公钥坐标,K 为大端序编码的私钥值,所有字段均为定长,必要时补零。

构建 X9.63 可参考:将加密工具包密钥存储在钥匙串 | 苹果开发者文档


2. PEM 格式转换与读取

2.1 PEM 转 P256

如果你有 PEM 编码的 P256 私钥,可用 CryptoKit 直接解析为 P256 私钥对象:

文档:init(pemRepresentation:) | Apple Developer Documentation

2.2 读取 ECC PEM 密钥为 SecKey

示例代码(Swift):

/// 加载 PEM 证书为 SecKey
/// - Parameter name: PEM 文件名(不含扩展名)
/// - Returns: SecKey 类型值
class func loadECCSecKeyFromPem(_ name: String) -> SecKey? {guard let pemURL = Bundle.main.url(forResource: name, withExtension: "pem") else {return nil}do {let pemStr = try String(contentsOf: pemURL)let p256 = try P256.Signing.PrivateKey(pemRepresentation: pemStr)let attributes: [String: Any] = [kSecAttrKeyType as String: kSecAttrKeyTypeECSECPrimeRandom,kSecAttrKeyClass as String: kSecAttrKeyClassPrivate]// kSecAttrIsPermanent 是否需要存储,默认不存储guard let secKey = SecKeyCreateWithData(p256.x963Representation as CFData,attributes as CFDictionary,nil)else {return nil}return secKey} catch {print(error)return nil}
}

如果需要将 PEM 转换为 X9.63,可先用 CryptoKit 读取后再取其 x963Representation 字节。


3. iOS 端创建 ECC 私钥并存储到 Keychain

如需新建私钥并写入钥匙串,可参考如下 Objective-C 代码:

+ (NSDictionary *)privateKeyParams {return @{(__bridge NSString *) kSecClass : (__bridge NSString *) kSecClassKey,(__bridge NSString *) kSecAttrApplicationLabel : MTRCAKeyChainLabel,// 存入钥匙串时,按需设置属性(__bridge NSString *) kSecAttrKeyClass : (__bridge NSString *) kSecAttrKeyClassSymmetric,};
}
+ (NSDictionary *)privateKeyCreationParams {// 按需设置密钥长度const size_t keySizeInBits = 256;return @{(__bridge NSString *) kSecAttrKeyClass : (__bridge NSString *) kSecAttrKeyClassPrivate,(__bridge NSString *) kSecAttrKeyType : (__bridge NSNumber *) kSecAttrKeyTypeECSECPrimeRandom,(__bridge NSString *) kSecAttrKeySizeInBits : @(keySizeInBits),(__bridge NSString *) kSecAttrIsPermanent : @(NO), // 是否永久保存};
}
/// 创建并存储 ECC 私钥
+ (SecKeyRef)generateCAPrivateKey {NSMutableDictionary *query = [[NSMutableDictionary alloc] initWithDictionary:[MSMatterFabricKeys privateKeyParams]];// 先删除旧密钥,防止添加失败SecItemDelete((__bridge CFDictionaryRef) query);CFErrorRef error = NULL;SecKeyRef key = SecKeyCreateRandomKey((__bridge CFDictionaryRef)[MSMatterFabricKeys privateKeyCreationParams], &error);if (error) {NSLog(@"Could not generate private key: %@", (__bridge NSError *) error);return NULL;}NSData *keyData = (__bridge_transfer NSData *) SecKeyCopyExternalRepresentation(key, &error);if (error) {NSLog(@"Could not get key external representation: %@", (__bridge NSError *) error);CFRelease(key);return NULL;}query[(__bridge NSString *) kSecValueData] = [keyData base64EncodedDataWithOptions:0];OSStatus status = SecItemAdd((__bridge CFDictionaryRef) query, NULL);if (status != errSecSuccess) {NSLog(@"Failed to store private key : %d", status);CFRelease(key);return NULL;}return key;
}

4. 证书直接读取

如需直接读取证书内容,可参考:证书读取方法(CSDN)


5. 相关资源

  • SecKeyCreateWithData | Apple Developer Documentation
  • SecKeyCopyExternalRepresentation | Apple Developer Documentation
  • 将加密工具包密钥存储在钥匙串 | Apple Developer Documentation
  • PEM 转 P256 | Apple Developer Documentation
  • 证书读取方法(CSDN)

http://www.dtcms.com/wzjs/30371.html

相关文章:

  • 网站建设与管理方案的总结新闻联播俄罗斯与乌克兰
  • 朝阳区网站建设现在推广引流什么平台比较火
  • 百度搜索引擎收录广州网站优化方案
  • 提供手机自适应网站建设维护百度推广年费多少钱
  • python做的网站seo优化在哪里学
  • 江西网站建设价格低怎么注册百度账号
  • 企业官方网站制作推广软件常熟网站建设
  • 百度短链接转化器seo是什么的缩写
  • 百度网站验证方法seo优化中商品权重主要由什么决定
  • 个人网站做团购百度快照如何优化
  • 公司集团网站开发百家号关键词排名
  • mvc4做网站五系统优化app
  • 万豪酒店线上营销推广惠州seo关键词排名
  • 手机网站设计小红书推广运营
  • 网站开发加维护需要多少钱适合交换友情链接的是
  • 百度刷排名百度快速排名泰州网站优化公司
  • 成都网站制作成都南宁百度seo推广
  • 澳门公交实时查询appseo与sem的区别
  • 创建蛋糕网站建设方案seo精灵
  • 门户网站要用什么软件做在线资源搜索引擎
  • 掼蛋网站建设北京疫情最新消息情况
  • asp网站怎么做目前好的推广平台
  • 网页设计代码看不到图片怎么办sem和seo的区别
  • 电商网站如何做多语言架构百度手机app下载安装
  • 石家庄建设集团自然搜索优化
  • 中医网站开发武汉搜索引擎排名优化
  • 企业网站建设 广州有效的网站推广方式
  • 中卫市建设局网站seo如何挖掘关键词
  • 杭州 seo网站建设 网络服务产品软文案例
  • 网页设计移动端尺寸大小苏州seo网站公司