C / Linuxは、ランダムな文字列を生成し、

書式#include <stdio.hに> 
する#include < 文字列の.h> 
の#include <stdlib.h>に含ま
する#include <TIME.H>

CHAR * genRandomString(int型の長さ)
{
    int型のフラグ、I。
    CHAR * 文字列
    srand関数((符号なし)時間(NULL))。
    もし((文字列 =(CHAR *)のmalloc(長さ))== NULL)
    {
        // myLog( "malloc関数失敗フラグ:!14 \ nは"); 
        リターンNULL;
    }
                 
    以下のための式(I = 0、I <長さ- 1 ; I ++ 
    {
        フラグ =ランド()%3 スイッチ(フラグ)
        {
            ケース 0 文字列 [I] = ' A ' +ランド()%26 休憩;
            ケース 1 文字列 [I] = ' ' +ランド()%26 休憩;
        ケース2 文字列 [I] = ' 0 ' +ランド()%10 休憩;
        デフォルト文字列 [I] = ' X ' ;
                休憩;
        }
    }
    文字列 [長さ- 1 ] = ' \ 0 ' 戻り値の 文字列
}

int型のmain()
{
    char * バフ。
    バフ = genRandomString(50 )。
    printf(" バフ=%S \ n " 、バフ)。
    無料(バフ)。
    リターン 0 ;
}

これは、乱数とLinuxの下でランダムな文字列を生成し、

図1に示すように、長さ32のランダムな文字列を生成します

-C 32頭の/ dev /ランダム| Base64で
1
実施形態の乱数効果は、それが乱数を生成していない場合、ブロックは、ブロック実行するプログラムがある、しかし、良好で生成
とは/ dev / urandomの2生成されたファイル

-C 32頭の/ dev /ランダム| Base64で
1
つの実施形態のランダム効果によって生成される乱数は、一般的であるが、速い生産速度、プログラムの動作を遮断することなく
3を、モードのOpenSSL

RAND -hex 10のOpenSSL
。1
。4は、乱数を生成します。

[73がルートである@〜] $ランダムエコー#
32641
[73は、ルートである@〜] $エコーRANDOM#
9753
[73は、ルートである@〜] $はRANDOM#エコー
710
1
2
3。
4。
5。
6。
注:得られた乱数が0の間であります〜32767の間の整数。

5、ランダムな文字列を生成し、

A、-nヘッド5#は/ dev / urandomの[73 @〜ルートである] |。セッド'S / [^ A-Z0-9] // G' |。-n弦4
fEVN
Lfkm0
PMSZfO
tEIw
aKbc
MWLTk1
。1
2
3。
4。
5。
6
。7
注:AZと0-9の文字列を生成します。

B、[ルート@ 73〜]#opensslのpasswdの-stdin <<(エコー)
5LYYPmuNIFS9c

C、[73 @ルートである〜]#ヘッド-n 5は/ dev / urandomの|。弦-n 5
] -bE&O
P \#P6C
_ \ I [K
C3Hn2、=
$ JfV5q
{8tD)
ZG} UW
。1
2
。3
。4
。5
。6
7
8
9
10
11
注:
文字列:
オブジェクトファイルまたはバイナリファイルに印刷可能な文字列を探します。
構文:
構文

文字列[-a] [ - ] [-o] [-tフォーマット] [-Number] [番号-n] [ファイル...]
1
参数:

-aまたは-印刷可能な文字列を検索し、ファイル全体だけでなく、データセクションを検索します。このフラグを省略した場合、唯一の初期化データ領域のオブジェクトファイル内の文字列のコマンドを見つけることができます。
-n数(デフォルト4つの文字に加えて)最小の文字列の長さを指定します。4096は、最大文字列の長さです。このフラグは-Numberフラグと同じです。
進の文字列を次の各ファイルには、-oリストを相殺しました。このフラグは、同じ-toのサインです。
各フォロワーがオフセットされた文字列の後に、ファイル、から始まる-tフォーマットリスト。フォーマットは、フォーマット変数などの文字に依存します。
D
小数書き込みがオフセット。
O
進書き込みオフセット。
X
進書き込みオフセット。
注:-oと-tフォーマットフラグは、よりコマンドラインで何度も定義された場合は、最後のフラグは、コントロールに文字列コマンドの動作を指定しました。
-numberは、(デフォルトの4つの文字に加えて)最小の文字列の長さを指定します。4096は、最大文字列の長さです。このフラグは-n番号フラグと同じです。
バイナリファイルのファイルまたはオブジェクトファイルを検索します。
。1
2
3
4
5
6
7
8
9
10
11
12である
13で
終了状況
このコマンドは次の終了値を返す:
0コマンドが正常に実行されたことを示しています。

0は、エラーを示します。

図3は、指定された文字セットからランダムな文字列を生成します。

#!/ binに/ bashの
MATRIX = "!0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz〜@#$%^&*()_ + ="
= "9" LENGTH
:しばらく[-le "$ LENGTHを" "$ {= 1からn}"]
やる
PASS = "$ PASS $ {MATRIX:$(($ RANDOM%で$ {#行列})):1}"
Nせ+ = 1
完了
エコー"$ PASS"

0終了
。1
2
3
4
5
6
7
8
9
10
。11
。4、時間によって乱数(年月日)を取得します

【chengmo @ CentOS5シェル] $ DATE + Nの%S%
1287764807051101270
#がより完璧ということができる、タイムスタンプが付加され、結合されたナノ秒
。1
2
3
5、一意の乱数を生成する内部データを介してシステム(の/ dev /ランダム、urandomの)

[chengmo @ centos5シェル] $ヘッド-1は/ dev / urandomの
AA†Ù...¡•KTþçanVÕã¹Û&õ¾「ô2íùU」ZF | _ Y「†mEðûUráÏ=J¯TŸA•ÌAÚRtÓ
1
2
?1行を読み込み、歪みが実際には、バイナリデータによるリアルタイムデータを保存することですか、そしてどのように我々は、整数データに変換し、それをオンにします?


[chengmo CentOS5 @〜/シェル] $ -200ヘッドは/ dev / urandomの| cksumの
1615228479 50333
。1
2
。3
urandomがデータは、直接猫に非常に大きな読み取ることはできませんされているので、ここでは最初の200行を取り、実際に全体のデータ変更されていますそしてどのようにあまりにもユニーク取ります。

cksumのは、ファイルの内容を読み取る一意の整数データ表現を生成し、唯一のファイルの内容は変更されないまま、それはPHPのCRC機能で生成された結果を変更しませんでしょう

図6に示すように、LinuxのUUIDのコードを読み取ります

[chengmo @ centos5〜/シェル] $猫は、/ proc / sys / kernel /ランダム/ UUID | cksumの"|「-d -f1カット
2141807556を

転送:https://blog.csdn.net/wy1550365215/article/details/77446501

おすすめ

転載: www.cnblogs.com/Malphite/p/12298342.html