Tag: encryption

我可以从Swift中的SecKeyRef对象获取模数或指数吗?

在Swift中,我通过调用一些原始X509证书数据上的SecTrustCopyPublicKey创build了一个SecKeyRef对象。 这就是这个SecKeyRef对象的样子。 Optional(<SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 3, block size: 2048 bits, exponent: {hex: 10001, decimal: 65537}, modulus: <omitted a bunch of hex data>, addr: 0xsomeaddresshere>) 基本上,这个SecKeyRef对象包含了大量有关公钥的信息,但似乎没有办法将SecKeyRef实际转换为string, NSData或其他任何东西(这是我的目标,只是为了获得一个base64 public键)。 但是,我有一个函数,我可以给一个modulus和exponent ,它只会计算公钥是什么。 我已经通过传入从上面的SecKeyReflogging的数据来testing它。 但不知何故,我不能从SecKeyRef对象访问这些属性(我只能看到控制台中的整个对象;例如,我不能做SecKeyRef.modulus或类似的东西,似乎) 。 我的问题:我如何访问SecKeyRef.modulus ,或者,将此SecKeyRef转换为NSData或类似的东西? 谢谢 编辑 (了解更多信息) 我正在创build我的SecKeyRefdynamic,通过这个函数我有: func bytesToPublicKey(certData: NSData) -> SecKeyRef? { guard let certRef = SecCertificateCreateWithData(nil, certData) […]

将NSData转换为SecKeyRef

我有一个公共密钥,我从远程服务器收集,我想用该公钥进行RSAencryption。 但问题是我得到公钥数据缓冲区中的字节数组。 我可以将其转换为NSData,但我不能转换为SecKeyRef,所以我可以继续encryption。 我的encryption代码是这样的: +(NSString *)encryptRSA:(NSString *)plainTextString withKey:(SecKeyRef)publicKey { size_t cipherBufferSize = SecKeyGetBlockSize(publicKey); uint8_t *cipherBuffer = malloc(cipherBufferSize); uint8_t *nonce = (uint8_t *)[plainTextString UTF8String]; SecKeyEncrypt(publicKey, kSecPaddingOAEP, nonce, strlen( (char*)nonce ), &cipherBuffer[0], &cipherBufferSize); NSData *encryptedData = [NSData dataWithBytes:cipherBuffer length:cipherBufferSize]; return [encryptedData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; } 正如你所看到的,我需要SecKeyRef对象types来完成我的encryption。 但是我的RSA公钥在NSDatavariables中。 那么如何将NSData转换为SecKeyRef对象types。 提前致谢。

在iOS上encryptionSQLite数据库文件

我的客户问我是否可以encryption他的iOS SQLite文件。 我检查了这两个资源: encryption和解密Sqlite文件(使用核心数据) http://support.apple.com/kb/HT4175 请纠正我,如果我错了,文件将被encryption,所以没有人能够破解它(虽然这将是可能的一个坚定的cookies,我认为)。 核心数据查询将照常运行吗? 我的意思是没有性能损失,既不是一个不同的API。

iOS:如何以编程方式从应用程序中的私钥和x509certificate创buildPKCS12(P12)密钥库?

这个问题显然是相似的,但没有任何答案:以编程方式为iPhone创build一个x509证书,而不使用OpenSSL 在我们的应用程序(服务器,客户端)中,我们正在实现客户端身份validation(基于X509Certificate的SSL)。 我们已经有一种方法来生成一个keypair ,创build一个PKCS10 Certificate Signing Request ,由self-signed CA并创build一个X509Certificate ,并将其发送回去。 但是,要在SSL请求中使用此证书,必须将private key和X509Certificate导出到PKCS12 (P12) keystore 。 有没有人知道如何做到这一点,或者即使有可能? 客户端必须生成P12文件(我们不想泄露私钥),客户端运行的是iOS,并且是移动设备。 该解决scheme使用BouncyCastle(SpongyCastle)的Android工作,但我们没有发现任何iOS。 编辑:在Java中,这个导出是由以下内容完成的: ByteArrayOutputStream bos = new ByteArrayOutputStream(); KeyStore ks = KeyStore.getInstance("PKCS12", BouncyCastleProvider.PROVIDER_NAME); ks.load(null); ks.setKeyEntry("key-alias", (Key) key, password.toCharArray(), new java.security.cert.Certificate[] { x509Certificate }); ks.store(bos, password.toCharArray()); bos.close(); return bos.toByteArray();

iOS核心数据encryption

我一直在使用Apple文档中提供的“SecKeyWrapper”类来encryption核心数据字段。 SecKeyWrapper类是非ARC的。 我想知道这是否仍然是encryption核心数据字段的最佳方法,或者是否有更新/更好的解决scheme? 谢谢

iOS上不同的填充types有什么区别?

在iOS上, 证书,密钥和信任服务 API包含以下填充types: kSecPaddingNone kSecPaddingPKCS1 kSecPaddingPKCS1MD2 kSecPaddingPKCS1MD5 kSecPaddingPKCS1SHA1 Apple CDSA邮件列表上的用户表示“kSecPaddingPKCS1 […]与PKCS#1 1.5相同”。 证书,密钥和信任服务引用使用“将完成标准ASN.1填充以及底层RSA操作的PKCS1填充”注释后三种填充types( kSecPaddingPKCS1MD2 , kSecPaddingPKCS1MD5和kSecPaddingPKCS1SAH )。 与kSecPaddingPKCS1什么不同? 根据RFC 3447, kSecPaddingPKCS1是底层RSA操作的原始填充吗? 使用SecKeyRawSign()签名SHA-256,SHA-384或SHA-512摘要时,开发人员是否需要使用kSecPaddingPKCS1并kSecPaddingPKCS1执行ASN.1填充? ASN.1填充是必需的还是可以省略的? 任何暗示我指向正确的方向是高度赞赏。

使用iOS上的RSA公钥encryption

我写了一个iOS应用程序来与现有的服务器通信。 服务器生成RSA密钥对(公钥和私钥),并将公钥发送给客户端。 客户端(iOS应用程序)只需要使用公钥进行encryption,并将encryption的数据发送到服务器。 所以,我需要一个Objective-C函数来执行RSAencryption。 input: 纯文本:hello world! 公钥: —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEChqe80lJLTTkJD3X3Lyd7Fj+ zuOhDZkjuLNPog3YR20e5JcrdqI9IFzNbACY/GQVhbnbvBqYgyql8DfPCGXpn0+X NSxELIUw9Vh32QuhGNr3/TBpechrVeVpFPLwyaYNEk1CawgHCeQqf5uaqiaoBDOT qeox88Lc1ld7MsfggQIDAQAB —–END PUBLIC KEY—– 处理: + (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey; 输出: uwGuSdCgDxAAN3M5THMrNcec3Fm/Kn+uUk7ty1s70oH0FNTAWz/7FMnEjWZYOtHe37G3D4DjqiWijyUCbRFaz43oVDUfkenj70NWm3tPZcpH8nsWYevc9a1M9GbnNF2jRlami8LLUTZiogypSVUuhcJvBZBOfea9cOonX6BG+vw= 题: 如何实现这个function? + (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey; 我已经有很长一段时间了,在SO和谷歌和苹果的文件。 我发现苹果需要一个.der文件来做encryption,而不仅仅是公钥。

将SecKeyRef设备生成的公钥/私钥对保存在磁盘上

我在设备上使用SecKeyGeneratePair()在设备上生成一个RSA对称密钥对。 我有每个键的SecKeyRef结构指针。 那么,如何将SecKeyRef保存到磁盘? 甚至传输它(我也想象也有正确的编码问题)? 苹果的“证书,密钥和信任服务”指南注释 您可以将您的公钥发送给任何可以用来encryption数据的人。 我想特别保存私钥。 所以我可以在部署的设备上使用它来解密用公钥encryption的数据。 PS我不介意每个键的结果数据是DER编码的ASN.1还是base-64; 我只需要弄清楚如何从SecKeyRef取出密钥。 我也很清楚OS X的SecKeychainItemExport()不存在。

Swift中的asynchronousencryption

我正在尝试使用公钥/私钥系统来encryption一个string。 我需要传递一个string到服务器,PHP脚本可以解密它。 我有一个工作的JavaScript到PHP脚本系统,但是,我想使PHP脚本也可以接受来自iOS应用程序的数据。 任何人都可以指向正确的方向,或者甚至可以向我介绍一个可以达到类似结果的系统。 我正在寻找任何types的encryption,我可以使用PHP解密。 先谢谢你。

我想在目标c中使用无填充的CFBencryption来创buildAES 128

我想使用无填充的CFBencryption来创buildAES 128 样本1:秘密数据是“HELLO WORLD”键:10 A5 88 69 D7 4B E5 A3 74 CF 86 7C FB 47 38 59 IV:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00明文(未encryption):48 45 4C 4C 4F 20 57 4F 52 4C 44encryption文本:25 60 52 25 0B 90 06 AF 1C E6 2B […]