Tag: 密码学

在Android和iPhone中使用AES 256encryption(不同的结果)

我试图通过引用IOS实现在Android平台上实现客户端encryption/解密。 我正在琢磨在Android和IOS平台上的encryption和解密是不同的,即使他们使用相同的algorithm。 比方说,Android设备encryption上传文件到服务器时,IOS设备无法正确下载和解密。 我正在使用的algorithm 使用用户提供的密码encryption文件密钥。 我们首先使用PBKDF2algorithm(SHA256的1000次迭代)从密码中导出密钥/ iv对,然后使用AES 256 / CBC对文件密钥进行encryption。 结果被称为“encryption文件密钥”。 这个encryption的文件密钥将被发送并存储在服务器上。 当您需要访问数据时,您可以从encryption的文件密钥中解密文件密钥。 所有文件数据都通过AES 256 / CBC文件密钥进行encryption。 我们使用PBKDF2algorithm(SHA256的1000次迭代)从文件密钥派生key / iv对。 在本地存储派生密钥/ iv对,并使用它们来encryption文件。 encryption后,数据被上传到服务器。 下载文件时与解密文件相同。 Android代码 private static final String TAG = Crypto.class.getSimpleName(); private static final String CIPHER_ALGORITHM = "AES/CBC/NoPadding"; private static int KEY_LENGTH = 32; private static int KEY_LENGTH_SHORT = 16; // minimum values recommended […]

在iOS中离线打开和存储encryption文档

我已经encryption的文件下载和可用于在一个文件夹中的离线查看,我想知道: 如何在适当的阅读器中打开它们,因为这些是ms office文档和prezi格式 我想他们将不得不encryption,以便读者可以阅读,但在这种情况下,如何确保安全? 使用哪个文件夹来避免iCloud同步,我已经阅读了这个禁用iCloud同步 当我阅读它时,iOS是否通过基于应用程序密钥的encryption来保护应用程序的文档?或者我错了吗?

无法解密通过iPhone上的OpenSSL编码的数据

对我之前的问题的一种跟进: 如何从OpenSSLencryption数据获得初始化向量(iv) 我正在使用OpenSSL命令行工具来encryption一个string,然后尝试使用<CommonCrypto/CommonCryptor.h>来解密iPhone上的string。 使用Dropbox SDK,将带有encryptionstring的xml文件加载到iPhone上,在那里我的应用程序试图parsing和解密此文件中的string。 这是openssl命令的一个例子: printf %s "Hello" | openssl enc -aes-128-cbc -K 00ff349830193845af43984758690213 -iv 0 -base64 上面的base 64string放在一个XML文件中,然后由应用程序parsing。 我正在使用Matt Gallagher的NSData来解码base64文本。 我假设这工作正常; 我还没有真正find一个testing它的好方法。 (来源: http : //cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html )。 以下是解密encryptionstring的方法。 关键是在这种情况下的NSString等于@"00ff349830193845af43984758690213" 。 + (NSString *)string:(NSString *)encryptedString withAES128Key:(NSString *)key { // decode base64, from Matt Gallagher's NSData category NSData *b64DecodedData = [NSData dataFromBase64String:encryptedString]; NSData *keyData = […]

我可以从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) […]

iPhone是否支持硬件加速的AESencryption?

我可以在iPhone / iPad上find对“硬件加速的AESencryption”的引用。 但是我可以find的用来进行AESencryption的API( CCCrypt )根本不谈硬件加速。 有没有人有任何想法,如果这些API是硬件加速或有其他的?

AES快速encryption

我试图在swift中实现AESencryption。 Android和C#的encryption解密工作正常。 我需要快速实施它。 这是Android和C#的当前代码是由此。 我试图使用 CryptoSwift 跨平台AESencryption 但是没有一个可行。 当我在服务器上发送encryption的string时,它不被解密。 任何帮助将不胜感激

iOS AESencryption – 无法encryption

在我的项目中,我需要实现AES 128 CBCencryption。 我正在使用类别,并基于NSData。 这是我的encryption代码: – (NSData*)AES128Decrypt { char ivPtr[kCCKeySizeAES128 + 1]; bzero(ivPtr, sizeof(ivPtr)); // fetch iv data [iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding]; // 'key' should be 32 bytes for AES256, will be null-padded otherwise char keyPtr[kCCKeySizeAES128 + 1]; // room for terminator (unused) bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding) // fetch key data […]