10

openssl を使用して大きなランダムな素数を生成するにはどうすればよいですか。乱数を生成して素数かどうかを確認する方法を見つけましたが、素数を確認するプロセスを自動化できませんでした。使用しているコマンドは次のとおりです。openssl rand -hex 256 | xargs openssl prime -hex

while ループを使用して、結果が素数かどうかを繰り返し確認する必要がありますか? 結果にキーワード「not」が含まれていないかどうかを確認するプロセスを自動化するにはどうすればよいですか?

これは、while ループを書く上で得たすべてのことです。

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

4

2 に答える 2

19

OpenSSL バージョン 1.0.0 以降では、コマンドに-generateオプションが追加されています。prime

$ openssl prime -generate -bits 2048 -hex
D668FDB1968891AE5D858E641B79C4BA18ABEF8C571CBE004EA5673FB3089961E4670681B794063592124D13FF553BBD5CCC81106A9E5F7D87370DD5DA6342B1DAC13CD2E584759CDEC3E76AEFB799848E48EA9C218F53FE3103E1081B8154AD41DDCB931175853FE3D433CECD886B4D94C211EAE01AE5EA93F8FBD6812A9DEF0308378EE963B3C39F80865BA0E1D957683F4ED77ADA9812091AA42E9A56F43C37185223FF9E3DD03C312E71DED072E5686873B3CA6F5F575C569FB0A10CFEA17D7FEB898A8A02549FF6E4B7A1FBCE78656D3DCF227318EEEF8E601C23AA32DF41A61F04D39FC752F70A809D636238340B7B929F0CDBA629F7DE6AAAC44D2BA5
于 2015-08-14T12:51:51.830 に答える
-4

素数を生成するには、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 "ibase=16;"$1}' | bcますawk '/is prime/ {print $1}'

出典: http://www.madboa.com/geek/openssl/#prime

于 2013-11-01T18:16:44.780 に答える