标签: rncryptor

创建需要(取决于)另一个框架的框架

我想在Swift中使用Cocoa Touch Framework Project创建一个框架.但是,我正在另一个名为RNCryptor的框架之上构建这个框架,这个框架基于Objective-C.我已经看过各种关于如何在Xcode中创建框架的教程,但没有一个教程覆盖了一个具有自己依赖性的框架.

我尝试创建一个框架项目,然后使用CocoaPods来管理它的依赖项.但是,出现了错误:'Check Dependencies'无法运行命令......'

所以问题是:是否有可能在Xcode中的另一个框架之上创建一个框架.如果是这样,怎么样?

xcode objective-c ios rncryptor swift

10
推荐指数
1
解决办法
3941
查看次数

在iOS上使用RNCryptor加密/解密大文件时出现内存问题

我正在尝试使用RNCryptor加密和解密iOS上的大文件(600 + MB).在github上,我找到了关于如何在流上异步使用库的示例代码.此代码类似于Rob Napier关于同一主题的问题的答案.

但是,虽然我认为我正确实现了代码,但该应用程序使用高达1.5 GB的内存(在iPad 6.1模拟器中).我认为代码应该阻止应用程序在内存中保留多个数据块?出了什么问题?

在我的控制器中,我创建了一个'CryptController',我用加密/解密请求发送消息.

  // Controller.m
  NSString *password = @"pw123";
  self.cryptor = [[CryptController alloc] initWithPassword:password];

  //start encrypting file
  [self.cryptor streamEncryptRequest:self.fileName andExtension:@"pdf" withURL:[self samplesURL]];

  //wait for encryption to finish
  NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:1];
  do {
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
                             beforeDate:timeout];
  } while (![self.cryptor isFinished]);
Run Code Online (Sandbox Code Playgroud)

在CryptController我有:

- (void)streamEncryptionDidFinish {
  if (self.cryptor.error) {
    NSLog(@"An error occurred. You cannot trust decryptedData at this point");
  }
  else {
    NSLog(@"%@ is complete. Use it as you like", [self.tempURL …
Run Code Online (Sandbox Code Playgroud)

memory objective-c ios rncryptor

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

RNCryptor不使用JSON字符串

以下是我使用RNCryptor加密/解密我发送给Web服务的JSON字符串的方法.我使用静态IV变量可能是不好的做法,但请不要专注于此.我是这样做的:

注:我使用发现马特加拉格尔的NSData的+ Base64编码类别这里(在页面底部)

-(NSString*)encryptString:(NSString*)plaintext withKey:(NSString*)key error:(NSError**)error{
    NSData *data = [plaintext dataUsingEncoding:NSUTF8StringEncoding];
    NSData *encryptionKey = [NSData dataFromBase64String:key];
    NSData *IV = [NSData dataFromBase64String:ENCRYPTION_IV];

    RNCryptorEngine *engine = [[RNCryptorEngine alloc] initWithOperation:kCCEncrypt settings:kRNCryptorAES256Settings key:encryptionKey IV:IV error:error];
    [engine addData:data error:error];
    NSData *encryptedData = [engine finishWithError:error];

    NSString *based64Encrypted = [encryptedData base64EncodedString];
    NSLog(@"Encrytped: %@", based64Encrypted);
    return based64Encrypted;
}
-(NSString*) decryptString:(NSString*)cipherText withKey:(NSString*)key error:(NSError**)error;{
    NSData *data = [NSData dataFromBase64String:cipherText];
    NSData *encryptionKey = [NSData dataFromBase64String:key];
    NSData *IV = [NSData dataFromBase64String:ENCRYPTION_IV];

    RNCryptorEngine *engine = [[RNCryptorEngine alloc] initWithOperation:kCCDecrypt settings:kRNCryptorAES256Settings key:encryptionKey IV:IV …
Run Code Online (Sandbox Code Playgroud)

encryption encoding ios rncryptor

7
推荐指数
1
解决办法
1877
查看次数

调度队列和异步RNCryptor

这是在iOS上使用RNCryptor异步解密大文件的后续操作

我已经设法用这篇文章中描述的方法异步解密一个大的下载文件(60Mb),由Calman在他的回答中纠正.

它基本上是这样的:

int blockSize = 32 * 1024;
NSInputStream *cryptedStream = [NSInputStream inputStreamWithFileAtPath:...];
NSOutputStream *decryptedStream = [NSOutputStream output...];

[cryptedStream open];
[decryptedStream open];

RNDecryptor *decryptor = [[RNDecryptor alloc] initWithPassword:@"blah" handler:^(RNCryptor *cryptor, NSData *data) {
    NSLog("Decryptor recevied %d bytes", data.length);
    [decryptedStream write:data.bytes maxLength:data.length];
    if (cryptor.isFinished) {
        [decryptedStream close];
        // call my delegate that I'm finished with decrypting
    }
}];

while (cryptedStream.hasBytesAvailable) {
    uint8_t buf[blockSize];
    NSUInteger bytesRead = [cryptedStream read:buf maxLength:blockSize];
    NSData *data = [NSData dataWithBytes:buf length:bytesRead];

    [decryptor addData:data];
    NSLog("Sent %d …
Run Code Online (Sandbox Code Playgroud)

objective-c grand-central-dispatch ios rncryptor

7
推荐指数
2
解决办法
3053
查看次数

代码签名.framework时出错

我使用CocoaPods来安装RNCryptor框架.这在我的应用程序中完美运行,并且通过xcode手动归档应用程序时效果很好.

但是当我使用命令终端尝试存档时:

xcodebuild -workspace "$APP.xcworkspace" -scheme "$APP" archive
Run Code Online (Sandbox Code Playgroud)

我收到错误:

/usr/bin/codesign --force --sign ... /RNCryptor.framework

no identity found
Command /bin/sh failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

macos xcode xcodebuild cocoapods rncryptor

6
推荐指数
1
解决办法
3407
查看次数

导入RNCryptor后架构armv7的未定义符号

我导入了RNCryptor,可以在这里找到:https://github.com/rnapier/RNCryptor到我的应用程序中.但是,我在日志中遇到了三个错误.

Undefined symbols for architecture armv7:
  "_SecRandomCopyBytes", referenced from:
      +[RNCryptor randomDataOfLength:] in RNCryptor.o
  "_kSecRandomDefault", referenced from:
      +[RNCryptor randomDataOfLength:] in RNCryptor.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我看到这通常是在导入的类没有包含在目标中时引起的,但是我已经检查了构建阶段,并且所有导入的类都在那里.我不知道造成这种情况的原因,我没有触及任何这些类的代码.我还清理了几次目标.

cocoa-touch objective-c armv7 ios rncryptor

5
推荐指数
2
解决办法
4028
查看次数

RNCryptor:要改变哪些设置以提高性能?

我的应用程序中有很多短字符串要解密,解密速度至关重要.

目前我正在试验,RNCryptor但发现它的默认设置对我的用例来说有点慢.否则它是一个很棒的框架:-)

加密只进行一次,因此其性能并不重要.

我很好地放弃了对速度的保护,因为我只想要有一个非常基本的加密.

RNCryptor您建议使用哪些设置进行加密和解密,以实现最快的解密性能?一个简短的代码样本会很棒!

同样,我对当前用例的非常基本的加密保护很好.

encryption objective-c ios rncryptor

4
推荐指数
1
解决办法
1173
查看次数

将作为二进制字符串加载的图像转换为 numpy 数组

有没有一种方法可以将作为二进制字符串加载的图像转换为大小为 (im_height, im_width, 3) 的 numpy 数组?像这样的东西:

# read image as binary string
with open(img_path, "rb") as image_file:
  image_string = image_file.read()

# convert image string to numpy
image_np = convert_binary_string_to_numpy(image_string)
Run Code Online (Sandbox Code Playgroud)

那个转换函数会是什么样子?我正在处理解密,因此我需要处理二进制字符串。谢谢!

python opencv numpy rncryptor pillow

4
推荐指数
1
解决办法
3847
查看次数

RNCryptor 未在 iOS 中解密

我在我的应用程序中使用RNCryptor。我使用密码为纯文本生成了一个加密字符串,当我尝试使用密码解密加密字符串时,它没有给我原始的纯文本,而是给了我一些随机字符串。

我想我在字符串编码/解码中遗漏了一些东西,但我不确定我在这里遗漏了什么。

你能指导我解决这个问题吗?

代码

func encrypt(plainText : String, password: String) -> String {
    let data: Data = plainText.data(using: .utf8)!
    let encryptedData = RNCryptor.encrypt(data: data, withPassword: password)
    let encryptedString : String = encryptedData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength76Characters)
    return encryptedString
}

func decrypt(encryptedText : String, password: String) -> String {
    do  {

        let data: Data = Data.init(base64Encoded: encryptedText, options: NSData.Base64DecodingOptions.ignoreUnknownCharacters)!

        let decryptedData = try RNCryptor.decrypt(data: data, withPassword: password)
        let decryptedString : String = decryptedData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength76Characters)
        return decryptedString

    }
    catch {
        return "FAILED"
    } …
Run Code Online (Sandbox Code Playgroud)

encryption ios rncryptor swift swift3

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

密码验证 - 如何安全地检查输入的密码是否正确

我正在开发一个需要多个密码来访问不同数据区域的应用程序.例如,一群人可以设置需要密码身份验证才能查看的聊天.

这是我正在考虑这样做的方式:

我有我的关键字,假设说:

香蕉

当用户输入密码时,我使用RNCryptor Banana使用输入的密钥加密,并将加密的字符串存储到服务器.

稍后,当有人试图输入密码时,我从服务器获取散列值并尝试使用他们输入的密码作为密钥对其进行解密.如果解密的值等于Banana我知道他们输入了正确的密码.

我是安全的新手,所以我不确定这是否是一个合适的解决方案.所有帮助表示赞赏.

更新

在进行了@Greg建议的一些改动以及恰当命名的@ Anti-weakpasswords后,这就是我所拥有的:

- (NSDictionary *) getPasswordDictionaryForPassword:(NSString *)password {

    NSData * salt = [self generateSalt256];
    NSData * key = [RNCryptor keyForPassword:password salt:salt settings:mySettings];

    NSMutableDictionary * passwordDictionary = [NSMutableDictionary new];

    NSString * saltString = stringFromData(salt);
    NSString * keyString = stringFromData(key);

    passwordDictionary[@"key"] = keyString;
    passwordDictionary[@"salt"] = saltString;
    passwordDictionary[@"version"] = @"1.0.0";
    passwordDictionary[@"iterationCount"] = @"10000";

    return passwordDictionary;
}

static const RNCryptorKeyDerivationSettings mySettings = {
    .keySize = kCCKeySizeAES256,
    .saltSize = 32,
    .PBKDFAlgorithm = kCCPBKDF2, …
Run Code Online (Sandbox Code Playgroud)

security encryption passwords objective-c rncryptor

0
推荐指数
1
解决办法
938
查看次数