int SecRandomCopyBytes ( SecRandomRef rnd, size_t count, uint8_t *bytes );
Ad esempio:
uint8_t data[100];
int err = 0;
// Don't ask for too many bytes in one go, that can lock up your system
err = SecRandomCopyBytes(kSecRandomDefault, 100, data);
if(err != noErr)
@throw [NSException exceptionWithName:@"..." reason:@"..." userInfo:nil];
NSData* randomData = [[NSData alloc] initWithBytes:data length:100];
Come notato da Peter nei commenti, si può anche fare questo:
NSMutableData* data = [NSMutableData dataWithLength:100];
err = SecRandomCopyBytes(kSecRandomDefault, 100, [data mutableBytes]);
E come notato da Rob nei commenti, è necessario collegare Security.framework per Sec RandomCopyBytes disponibili. È inoltre necessario includere SecRandom.h
.
Come saprai quali byte sono le aggiunte casuali e quali fanno parte del testo in chiaro originale quando decifri? Esistono già diversi schemi di pad crittografici diversi da utilizzare in diverse circostanze, la maggior parte dei quali è più facile da tagliare in seguito rispetto a un mucchio di byte casuali. – rossum