标签: commoncrypto

在Swift框架中导入CommonCrypto

如何CommonCrypto在iOS的Swift框架中导入?

我理解如何CommonCrypto在Swift应用程序中使用:您添加#import <CommonCrypto/CommonCrypto.h>到桥接标头.但是,Swift框架不支持桥接头.该文件说:

您可以导入具有纯Objective-C代码库,纯Swift代码库或混合语言代码库的外部框架.无论框架是用单一语言编写还是包含来自两种语言的文件,导入外部框架的过程都是相同的.导入外部框架时,请确保将要导入的框架的"定义模块"构建设置设置为"是".

您可以使用以下语法将框架导入到不同目标中的任何Swift文件中:

import FrameworkName
Run Code Online (Sandbox Code Playgroud)

不幸的是,导入CommonCrypto不起作用.也没有添加#import <CommonCrypto/CommonCrypto.h>到伞头.

ios commoncrypto swift

181
推荐指数
8
解决办法
10万
查看次数

Swift中的CommonHMAC

我正在尝试在Swift中创建字符串的HMAC SHA-1哈希,但无法弄清楚如何与API进行交互,因为它似乎没有导入CommonCrypto框架.我尝试了各种不同形式的"import CommonCrypto"并创建了一个桥接头文件,但没有一个有所作为.

奇怪的是,如果我创建一个Objective-C类,我可以毫无问题地与API交互,所以这似乎是Swift独有的.

如果有人能告诉我uint8_t digest[CC_SHA1_DIGEST_LENGTH]Swift中的等价物,我会非常感激

macos hash hmacsha1 commoncrypto swift

36
推荐指数
2
解决办法
3万
查看次数

AES加密在swift中

我正在尝试在swift中实现AES加密.Android和C#的加密解密工作正常.我需要在swift中实现它.这是Android和C#的当前代码,后面是这个.

我试着用

  1. CryptoSwift
  2. 跨平台AES加密

但它都不起作用.当我在服务器上发送加密的字符串时,它没有被解密.

任何帮助将不胜感激

cryptography aes ios commoncrypto swift

24
推荐指数
4
解决办法
4万
查看次数

何时检查"此应用程序使用加密"框?

提交或更新应用时,您面临的一个问题是:

自上次上传此产品的二进制文件以来,您是否添加或更改了加密功能?

图片: 在此输入图像描述

我的问题是,如果我使用从<CommonCrypto/CommonCryptor.h>库中获得的加密,我是否必须对该Q进行检查?

我有一个文件,我想加密,发送到iPhone,并使用CommonCrypto在iPhone上解密.与同事交谈时,我得到了不同的回答.有些人认为,由于它是一个包含在内的公平游戏框架,其他人则表示你必须得到政府的批准.

看起来CommonCrypto支持(充其量)采用ECB密码模式的AES 128位加密.所以,这就是我计划使用的东西.

附注:我计划在github 上使用AlanQuatermain/aqtoolkit中NSData+CommonCrypto类别.这只是CommonCrypto的一个包装,仅此而已.

相关的是,如果您使用HTTPS(SSL),是否必须选中YES?请参阅进行HTTPS(TLS)连接的应用程序的iPhone加密导出合规性 - 续.我不需要https连接,但这让我感到惊讶......

encryption https aes ios commoncrypto

19
推荐指数
1
解决办法
8861
查看次数

使用RSA在iOS上签名和验证

如何使用RSA密钥在iOS上签名和验证某些数据(最好使用系统自己的libcommonCrypto)?

rsa ios commoncrypto pkcs#7

19
推荐指数
1
解决办法
1万
查看次数

在iOS上使用CommonCrypto的PBKDF2

我正在尝试使用CommonCrypto生成密钥,PBKDF2但我似乎无法导入CommonCrypto/CommonKeyDerivation.h,我只是错误,它没有找到.

有任何想法吗?

编辑:我应该提到我已经添加了安全框架,我可以导入所有其他CommonCrypto标头.

objective-c pbkdf2 ios commoncrypto

14
推荐指数
2
解决办法
2万
查看次数

如何在swift 2和3中使用常见的加密和/或计算sha256

我试图根据sha256使哈希成为密码值.我已经搜索了这个,但没有关于swift 2的信息.这个解决方案对我没用

func sha256(data:String) -> String {
        let data = self.dataUsingEncoding(NSUTF8StringEncoding)!
        var digest = [UInt8](count:Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0)
        CC_SHA256(data.bytes, CC_LONG(data.length), &digest)
        let hexBytes = digest.map { String(format: "%02hhx", $0) }
        return hexBytes.joinWithSeparator("")
    }
Run Code Online (Sandbox Code Playgroud)

它给出错误:使用未解析的标识符CC_SHA256_DIGEST_LENGTH

sha256 digest commoncrypto swift2

12
推荐指数
1
解决办法
9481
查看次数

Swift:如何从Swift调用CCKeyDerivationPBKDF

我正试图从Swift调用CCKeyDerivationPBKDF.

我在Project-Bridging-Header.h中导入了所需的标题:

#import <CommonCrypto/CommonKeyDerivation.h>
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,桥接标题似乎可以正常导入我的项目中的其他Objective C代码).

在Xcode中,我可以从我的.swift文件跳转到这里显示的定义:

int 
CCKeyDerivationPBKDF( CCPBKDFAlgorithm algorithm, const char *password, size_t passwordLen,
                      const uint8_t *salt, size_t saltLen,
                      CCPseudoRandomAlgorithm prf, uint rounds, 
                      uint8_t *derivedKey, size_t derivedKeyLen)
Run Code Online (Sandbox Code Playgroud)

最后,当我尝试这样调用函数时:

let result = CCKeyDerivationPBKDF(CCPBKDFAlgorithm(kCCPBKDF2), NSString(password).UTF8String, size_t(passwordLength), UnsafePointer<UInt8>(salt.bytes), size_t(salt.length), CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA256), uint(actualRoundCount), UnsafeMutablePointer<UInt8>(derivedKey.mutableBytes), size_t(derivedKey.length));
Run Code Online (Sandbox Code Playgroud)

...我得到这个编译器错误:

无法使用类型'(CCPBKDFAlgorithm,UnsafePointer,size_t,UnsafePointer,size_t,CCPseudoRandomAlgorithm,uint,UnsafeMutablePointer,size_t)的参数列表调用'init'

我相信所有演员阵容都是正确的(实际上编译器错误帮助我识别每个参数的每个问题) - 这让我觉得编译器理解我调用CCKeyDerivationPBKDF的意图.

但是,在所有其他转换错误消失后,编译器会感到困惑并认为我正在尝试使用初始化程序构造一个类.

希望有人能告诉我我的方式的错误.

(Xcode 6 beta 7)

根据要求,上下文中的完整代码:

class func generateAesKeyForPassword(password: String, salt: NSData, roundCount: UInt?, error: NSErrorPointer) -> (key: NSData, actualRoundCount: UInt)?
    {
        let derivedKey = NSMutableData(length: kCCKeySizeAES256)

        let passwordLength = size_t(password.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))

        var …
Run Code Online (Sandbox Code Playgroud)

commoncrypto swift

11
推荐指数
1
解决办法
4734
查看次数

在Swift中使用CCCrypt(CommonCrypt)的问题

我正在将一个有效的Objective-C类别(NSData + AESCrypt.m)移植到Swift,我发现了一个与指针一起工作的问题.Swift中加密部分的代码正确编译,但生成运行时EXEC_BAD_ACCES错误.

我到目前为止的代码是(我试图尽可能地剖析代码):

let key = "123456789012345678901234567890120"
let keyLength = UInt(kCCKeySizeAES256 + 1)
let keyPointer = strdup(key)    // Convert key to <UnsafeMutablePointer<Int8>

let message = "Don´t try to read this text. Top Secret Stuff"
let data = (message as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let dataBytes = data?.bytes
let length = data?.length
let dataLength = UInt(length!)
let dataPointer = UnsafePointer<UInt8>(dataBytes!)

let operation: CCOperation = UInt32(kCCEncrypt)
let algoritm: CCAlgorithm = UInt32(kCCAlgorithmAES128)
let options: CCOptions = UInt32(kCCOptionECBMode + kCCOptionPKCS7Padding)

let cryptBufferSize = UInt(dataLength + kCCBlockSizeAES128) …
Run Code Online (Sandbox Code Playgroud)

cryptography objective-c ios commoncrypto swift

11
推荐指数
2
解决办法
1万
查看次数

Xcode 7.3 beta 1与Swift中的CommonCrypto

我在Swift框架中使用CommonCrypto - 它已经运行了一年多了.

我使用了这里找到的解决方案:在Swift框架中导入CommonCrypto

具体来说,为了从Swift框架引用CommonCrypto,我不得不:

module.mapCommonCrypto我的框架的Xcode项目旁边的文件夹中创建一个文件.module.map内容:

module CommonCrypto [system]
{
    header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
    link "CommonCrypto"
    export *
}
Run Code Online (Sandbox Code Playgroud)
  • 在我的框架项目的Swift导入路径中,我添加了 CommonCrypto
  • 在我的框架项目的图书馆搜索路径中,我包括: $(SDKROOT)/usr/lib/system
  • 在我的来源中,我包括: import CommonCrypto

这很好用; 有点复杂 - 但它奏效了.

但是,在Xcode 7.3 beta 1(7D111g)中,此技术不再有效.

它似乎libcommonCrypto.tbd已从$(SDKROOT)/usr/lib/systemXcode-beta.app中删除:我无法在iPhoneOS SDK文件夹结构下找到它.

所以我得到这些错误:

ld:警告:找不到选项'-L/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/usr/lib/system'ld的目录:ld:library找不到架构arm64 clang的-lCommonCrypto:错误:链接器命令失败,退出代码为1(使用-v查看调用)

如果疯狂的模块地图业务被更简单的东西取代,那将是很棒的.比如说,只是使用import CommonCrypto

在任何情况下,我不知道如何解决这个问题,所以任何帮助都表示赞赏.

如果解决方案与上一个问题中找到的解决方案大不相同,我在这里要求提出一个新问题,尽管我很欣赏这可能不合适.

frameworks commoncrypto xcode7 swift2

9
推荐指数
1
解决办法
1137
查看次数