2013-11-01 30 views
6

opensslを使用して大きなランダムな素数を生成するにはどうすればよいですか?乱数を生成して素数かどうかを調べる方法を知りましたが、 openssl rand -hex 256 | xargs openssl prime -hexOpenSSLを使用して素数を生成する

ループは、を使用して、結果が素数であるかどうか繰り返し確認する必要がありますか?結果はキーワード「ない」が含まれていない場合、どのように私はこれは私がwhileループを書くことになったすべての更され、

をチェックするプロセスを自動化することができます。

while [{openssl rand -hex 256 | xargs openssl prime -hex} = *"$not"*]

答えて

-1

より良い方法があります。 opensslを使用するよりも素数を生成する必要があります。あなたは本当に、しかし、この方法で設定されたこのようなものを使用している場合

(番号の範囲で呼び出すチェックする):

#!/bin/bash 
# Usage: $0 <starting_number> <final_number> 
N=$1 
while ((N <= $2)); do 
    # use bc to convert hex to decimal 
    openssl prime $N | awk '/is prime/ {print "ibase=16;"$1}' | bc 
    let N++ 
done 

あなたはopensslの-生成された乱数でこれを行うにしたい場合は、使用あなたは、小数点のために気にしない場合は

#!/bin/bash 
# Usage: $0 <count> 
N=$1 
while ((N-- > 0)); do 
    # use bc to convert hex to decimal 
    openssl rand -hex 256 | xargs openssl prime -hex | awk '/is prime/ {print "ibase=16;"$1}' | bc 
done 

は、awk '/is prime/ {print $1}'

広告でawk '/is prime/ {print "ibase=16;"$1}' | bcを置き換える:この(試行回数と呼びます) apted:http://www.madboa.com/geek/openssl/#prime

10

OpenSSLのバージョン1.0.0以降がprimeコマンドに-generateオプションを追加します。

$ openssl prime -generate -bits 2048 -hex 
D668FDB1968891AE5D858E641B79C4BA18ABEF8C571CBE004EA5673FB3089961E4670681B794063592124D13FF553BBD5CCC81106A9E5F7D87370DD5DA6342B1DAC13CD2E584759CDEC3E76AEFB799848E48EA9C218F53FE3103E1081B8154AD41DDCB931175853FE3D433CECD886B4D94C211EAE01AE5EA93F8FBD6812A9DEF0308378EE963B3C39F80865BA0E1D957683F4ED77ADA9812091AA42E9A56F43C37185223FF9E3DD03C312E71DED072E5686873B3CA6F5F575C569FB0A10CFEA17D7FEB898A8A02549FF6E4B7A1FBCE78656D3DCF227318EEEF8E601C23AA32DF41A61F04D39FC752F70A809D636238340B7B929F0CDBA629F7DE6AAAC44D2BA5 
関連する問題