gpt4 book ai didi

security - Mac上公钥加密/解密的示例代码?

转载 作者:行者123 更新时间:2023-12-04 13:55:12 25 4
gpt4 key购买 nike

在哪里可以找到一些简单的 Mac OS X 上公钥加密和解密的示例代码?我很沮丧 Apple 的“证书、 key 和信任服务编程指南”显示了如何在 iOS 上执行此操作,但所需的 API(SecKeyEncryptSecKeyDecrypt)显然在 Mac OS X 上不可用。可能有一种在“CryptoSample”中实现的方法,但它看起来并不清晰或简单,并且示例项目太旧,无法使用当前版本的 Xcode 打开。

最佳答案

安全框架 API 在 Mac OS 版本之间变化相当频繁。最佳方法取决于您的目标版本:

  • 如果您的代码只需要在 10.7 及更高版本上运行,您可以使用 Security Transforms,这是一种用于加密转换的新的高级公共(public) API。 Security Transforms Programming Guide 有有用(而且简单!)的示例代码:

    http://developer.apple.com/library/mac/#documentation/Security/Conceptual/SecTransformPG/SecurityTransformsBasics/SecurityTransformsBasics.html

    您需要使用 SecEncryptTransformCreate 创建一个转换。或 SecDecryptTransformCreate , 使用 SecTransformSetAttribute 设置其输入并使用 SecTransformExecute 执行它.
  • 如果您需要支持 Mac OS 10.6 或更低版本,则必须使用低级且相当可怕的 CDSA API。 CryptoSamplecdsaEncrypt是一个简洁的例子。

    http://developer.apple.com/library/mac/#samplecode/CryptoSample/Listings/libCdsaCrypt_libCdsaCrypt_cpp.html

    你可以得到一个CSSM_CSP_HANDLECSSM_KEY从 SecKeyRef 使用 SecKeyGetCSPHandleSecKeyGetCSSMKey , 分别。

    要了解有关 CDSA 的更多信息,可从 Open Group 获得完整规范(免费,但需要注册):

    https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?publicationid=11287

    祝你好运!
  • 如果私钥是可导出的,您可以将其导出为不 protected 格式并直接使用 openssl。这会将原始 key 数据直接放在应用程序的地址空间中,因此它违背了钥匙串(keychain)的主要目的之一。不要这样做。
  • 最后,您可以使用私有(private)函数。 Mac OS 10.6 和 10.7 包括但不公开声明 SecKeyEncryptSecKeyDecrypt , 与 iOS 上的参数相同。 quick'n'dirty 解决方案是简单地声明和使用它们(弱链接,带有通常的警告)。在您计划分发给其他人的代码中,这可能是一个坏主意。
  • 关于security - Mac上公钥加密/解密的示例代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140664/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com