在iOS中创建随机的128位AES加密密钥 [英] Create random 128 bit AES Encryption key in iOS

查看:3557
本文介绍了在iOS中创建随机的128位AES加密密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在ios中创建随机AES加密密钥(128位)。我在SO搜索,但我找不到一个好的答案。请给我一些建议。提前感谢。

I want to create random AES Encryption key (128 bit) in ios. I have searched in SO but I cannot find a good answer. Please give me some advice. thanks in advance.

更新:

我使用了BBAES库。我使用下面的代码生成加密密钥,但是当我从NSData转换到NSString,它显示NULL

I have used BBAES lib. I used the below code to generate the encryption key but when I convert from NSData to NSString, it shows NULL

  -(NSData*)randomDataWithLength{
    NSData* salt = [BBAES randomDataWithLength:BBAESSaltDefaultLength];
    NSData *key = [BBAES keyBySaltingPassword:@"password" salt:salt keySize:BBAESKeySize128 numberOfIterations:BBAESPBKDF2DefaultIterationsCount];
    NSLog(@"Data ASE Key %@",key);
    NSString *aString  = [[NSString alloc] initWithData:key encoding:NSUTF8StringEncoding];
}


推荐答案

一个简单的任务!

- (NSData *)random128BitAESKey {
    unsigned char buf[16];
    arc4random_buf(buf, sizeof(buf));
    return [NSData dataWithBytes:buf length:sizeof(buf)];
}

你可能听说过应该使用salt和hash你的密码。看起来你采取这个建议有点太远:有没有密码在这里,但你的代码仍然盐和哈希数据!当输入来自 arc4random 的安全随机数生成器时,这是完全无用的。

You probably heard somewhere that you should use salt and hash your passwords. It looks like you took this advice a little too far: there are no passwords here and yet your code still salts and hashes the data! This is completely useless when the input comes from a secure random number generator like arc4random.

t转换为 NSString ,因为随机数据不太可能是有效的UTF-8字符串。

Of course it won't convert to an NSString because random data is unlikely to be valid UTF-8 string.

这篇关于在iOS中创建随机的128位AES加密密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆