Tag: 密码学

如何certificate一个iOS应用程序的起源?

我有一个开放源码的iOS项目,在github上有公共资源。 我已经使用我的开发人员帐户在App Store上发布了该应用程序。 有没有办法让我向用户certificate发布的应用程序实际上是从github上的源代码编译的? 编辑 澄清:我正在寻找一个math (或密码,如果你喜欢),certificate应用程序二进制源于公开可用的源代码,而不是一种免责声明。 免责声明可以声称任何东西,但没有certificate任何东西。 例如,通过对应用程序包进行代码签名,我向苹果certificate,该应用程序的创build者和在苹果公司注册的开发者是同一个人。 我的问题是,是否存在类似的机制来向用户certificate二进制的来源和公共来源是相同的。

如何在iOS AWS SDK中执行客户端encryption?

是可用的么 ? 还是应该select我自己的algorithm来encryption数据并将其上传到S3存储桶? 我有要求在多平台(android / C#/ ios)中创build一个应用程序,我们必须encryption数据并将其存储到服务器端。 。 。 我已经试过这个库来encryption数据,但在iOS方面,我有不同的结果。 。 。

在目标C中解密AES-256-CBC

我正在构build一个iPhone应用程序,从PHP后端通过JSON获取解密的string。 在PHP中,我正在像这样encryptionstring: $encrypt_method = "AES-256-CBC"; $secret_key = 'This is my secret key'; $secret_iv = 'This is my secret iv'; // hash $key = hash('sha256', $secret_key); // iv – encrypt method AES-256-CBC expects 16 bytes – else you will get a warning $iv = substr(hash('sha256', $secret_iv), 0, 16); if( $action == 'encrypt' ) { $output = […]

基于带有CommonCrypto的椭圆曲线Diffie-Hellman的共享秘密

我正在寻找CommonCrypto中的方法来生成基于ECDH(椭圆曲线Diffie-Hellman)的共享密钥。 我可以find这样的专有实现https://github.com/surespot/surespot-ios/blob/master/surespot/encryption/EncryptionController.mm,但这一个不使用CommonCrypto。 计算共享密钥的方法有时称为密钥交换,并包括计算共享密钥。 有人可以发送链接到正确的文档或使用CommonCrypto生成基于椭圆曲线Diffie-Hellman的共享密钥的示例吗?

如何从OpenSSLencryption数据获取初始化向量(iv)

免责声明:新encryption。 我有一个使用OpenSSL来encryption数据的外部进程,现在它使用salt。 iPhone应用程序从服务器获取数据,将其下载到应用程序的文档目录,并需要解密。 iPhone OS不包含OpenSSL库。 你可以自己构build它,但这很困难和棘手。 我find的“最简单”的解决scheme,感谢Stackoverflow的帮助,是使用CommonCrypto/CommonCryptor.h ,它是安全框架的一部分。 但是解密数据的C函数需要iv才能正确解密。 有没有一种方法来从encryption的数据(这对我来说,似乎会否定额外的安全性)导出iv? 或者我需要,首先,以某种方式指定iv,让iPhone应用程序知道它是什么? 或者,不要使用盐? 编辑1:为了澄清,我使用OpenSSL来encryption数据文件中的文本。 使用OpenSSL的脚本将文本encryption,上传到Dropbox ,然后应用程序从Dropbox下载文件,parsing文件,并尝试解密文本。 编辑2:是的,我正在使用OpenSSL命令行实用程序与-pass选项。

AESencryptionAndroid < – > iOS消息长度大于15字节的不同结果

在理解这两个设备上的密码/解密器时,我遇到了一个真正的问题。 1.如果我们使用Cipher AES在iOS和Android上对消息进行encryption,并且string的字符长度不大于16(例如“abcdefghijklmno”),则使用相同的密钥/密码进行encryption后得到相同的结果。 2.但是,如果采取更长的消息,我们会在iOS和Android上获得不同的结果(例如“abcdefghijklmnop”) 我做了很多研究,如何得到这两个设备相同的参数,起初我认为这是安全的。 这是我的encryption密码: public String encode(Context context, String password, String text) throws NoPassGivenException, NoTextGivenException { if (password.length() == 0 || password == null) { throw new NoPassGivenException("Please give Password"); } if (text.length() == 0 || text == null) { throw new NoTextGivenException("Please give text"); } try { SecretKeySpec skeySpec = getKey(password); byte[] […]

iOS SecKeyRef(公钥)发送给服务器

现在我的公钥存在一个问题,我使用SecKeyGeneratePair来生成公共和私有的。 现在我必须将我的公钥发送到服务器。 我用下面的方法将SecKeyRef转换为NSData,总是得到相同的公钥。 不过,我把它转换成base64格式并发送给服务器。 但它不工作,服务器(Java)开始抛出错误。 这是我的iOS代码: – (NSData *)getPublicKeyBits { OSStatus sanityCheck = noErr; NSData * publicKeyBits = nil; NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init]; // Set the public key query dictionary. [queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass]; [queryPublicKey setObject:publicTag forKey:(id)kSecAttrApplicationTag]; [queryPublicKey setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType]; [queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnData]; // Get the key bits. sanityCheck = SecItemCopyMatching((CFDictionaryRef)queryPublicKey, (CFTypeRef […]

在canAuthenticateAgainstProtectionSpace中检查一个公钥

我被要求在canAuthenticateAgainstProtectionSpace ( NSURLConnection的委托callback)中检查公钥, 这是我迄今为止: – (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { SecKeyRef publicKey = SecTrustCopyPublicKey([protectionSpace serverTrust]); NSLog(@"%@",SecTrustCopyPublicKey([protectionSpace serverTrust])); return YES; } 我怎样才能比较公钥与已知的价值? NSLog产生: <SecKeyRef: 0x687c000>这是不会有用的。

IOS – 如果文件太大而无法将所有文件加载到内存中,我如何解密一个大文件?

我知道如何AESencryption和解密一个NSData ,但是这需要首先将整个文件加载到内存中。 假设我有一个名为data.dat.enc的50mbencryption文件,我怎样才能解密它到一个文件data.dat而不必首先加载到内存?

如何在iOS上使用AES GCM进行encryption?

我需要在GCM模式下使用AESencryption来encryption/解密一些数据,但显然这不能用CommonCrypto API来完成。 这已经在这里被问过,但接受的答案不是我正在寻找,因为我需要使用这个特定的algorithm。 有任何想法吗? 我应该使用OpenSSL吗? 因为我听说在iOS中使用它有一些错误。 我在Swift中寻找答案,但是Objective-C也可以。