【问题标题】:Generate prime number using OpenSSL使用 OpenSSL 生成素数
【发布时间】:2013-11-12 23:20:34
【问题描述】:

如何使用 openssl 生成一个大的随机素数,我发现了如何生成一个随机数并检查它是否为素数,但我无法自动化检查素数的过程,这是我的命令我正在使用:openssl rand -hex 256 | xargs openssl prime -hex

我应该使用 while 循环 反复检查结果是否为素数吗?如何自动检查结果是否不包含关键字“not”,

这是我编写 while 循环的全部内容:

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

【问题讨论】:

    标签: bash openssl primes


    【解决方案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 "ibase=16;"$1}' | bc 替换为awk '/is prime/ {print $1}'

    改编自:http://www.madboa.com/geek/openssl/#prime

    【讨论】:

      【解决方案2】:

      OpenSSL 版本 1.0.0 及更高版本将 -generate 选项添加到 prime 命令:

      $ openssl prime -generate -bits 2048 -hex
      D668FDB1968891AE5D858E641B79C4BA18ABEF8C571CBE004EA5673FB3089961E4670681B794063592124D13FF553BBD5CCC81106A9E5F7D87370DD5DA6342B1DAC13CD2E584759CDEC3E76AEFB799848E48EA9C218F53FE3103E1081B8154AD41DDCB931175853FE3D433CECD886B4D94C211EAE01AE5EA93F8FBD6812A9DEF0308378EE963B3C39F80865BA0E1D957683F4ED77ADA9812091AA42E9A56F43C37185223FF9E3DD03C312E71DED072E5686873B3CA6F5F575C569FB0A10CFEA17D7FEB898A8A02549FF6E4B7A1FBCE78656D3DCF227318EEEF8E601C23AA32DF41A61F04D39FC752F70A809D636238340B7B929F0CDBA629F7DE6AAAC44D2BA5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-16
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2013-12-02
        相关资源
        最近更新 更多