arc4random(3)改

2014. 05. 31
BSDライブラリ関数マニュアル ARC4RANDOM(3)


●名前

arc4randomarc4random_bufarc4random_uniformarc4random_stirarc4random_addrandom
arc4乱数ジェネレータ


ライブラリ

標準Cライブラリ(libc、-lc)


書式

#include <stdlib.h>

u_int32_t
arc4random(void);

void
arc4random_buf(void *buf, size_t nbytes);

u_int32_t
arc4random_uniform(u_int32_t upper_bound);

void
arc4random_stir(void);

void
arc4random_addrandom(unsigned char *dat, int datlen);


解説

arc4random()関数は、8x8の8ビットS-Boxを使用したarc4暗号で採用されているキーストリームジェネレータを利用します。
S-Boxは約21700の状態を取ることができます。
arc4random()関数は0 〜 232 - 1の範囲の擬似乱数を返すため、rand(3)random(3)の範囲の2倍あります。

arc4random_buf()関数は、ARC4に由来するランダムデータで長さnbytesの領域bufを埋めます。

arc4random_uniform()は、upper_boundより少ない均一に分散した乱数を返します。
arc4random_uniform()は、"arc4random() % upper_bound"のような構造の場合、上限が2のべき乗ではない時に生ずる"モジュロバイアス(剰余の偏在)"を回避するので推奨されます。

arc4random_stir()関数は/dev/urandomからデータを読み込み、arc4random_addrandom()経由でS-Boxの順序を変えて使用しています。

arc4random()ファミリーは自動的に自身を初期化するので、使用する前にarc4random_stir()を呼び出す必要はありません。


●例

以下にarc4random()を使用して従来のrand()やrandom()関数を挿入置換する方法を示します。

#define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))


●関連項目

rand(3)random(3)srandomdev(3)


●歴史

RC4はRSA Data Security社によって設計されました。
それはUSENETに匿名で投稿され、オリジナルの暗号文にアクセスできる複数の情報元によって同等であることが確認されました。
RC4は企業秘密であるため、この暗号化は現在ARC4と呼ばれています。


BSD 1997年4月15日



参考文献

Mac OS X Manual Page/arc4random_uniform(3)

0 CommentsPosted in 資料





Bose QuietComfort 20
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2017/09 | 10
Sun Mon Tue Wed Thu Fri Sat
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR