【问题标题】:Generating the 256bit ECDSA private key生成 256 位 ECDSA 私钥
【发布时间】:2018-08-04 12:25:26
【问题描述】:

我想用 php 制作一个带有 secp256k1 曲线的 256 位 ECDSA 私钥。

我用过这个sn-p:

$pk_Generate = openssl_pkey_new(array(
    'private_key_bits' => 256,
    'private_key_type' => OPENSSL_KEYTYPE_EC,
    'curve_name' => 'secp256k1'
));

while ($msg = openssl_error_string())
    echo $msg . "<br />\n";

openssl_pkey_export($pk_Generate, $pk_Generate_Private);
var_dump($pk_Generate_Private); // show me NULL

但它给了我这个错误:

error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value
error:0E06D06C:configuration file routines:NCONF_get_string:no value

如果这段代码运行良好,它会以PEM 格式显示我的私钥,但我希望它是十六进制字符串格式。

请指导我。

【问题讨论】:

    标签: php private-key ecdsa


    【解决方案1】:

    试试这个

    $config = [
        "config" => getenv('OPENSSL_CONF'),
        'private_key_type' => OPENSSL_KEYTYPE_EC,
        'curve_name' => 'secp256k1'
    ];
    $res = openssl_pkey_new($config);
    if (!$res) {
        echo 'ERROR: Fail to generate private key. -> ' . openssl_error_string();
        exit;
    }
    // Generate Private Key
    openssl_pkey_export($res, $priv_key, NULL, $config);
    // Get The Public Key
    $key_detail = openssl_pkey_get_details($res);
    $pub_key = $key_detail["key"];
    
    echo "priv_key:<br>".$priv_key;
    echo "<br><br>pub_key:<br>".$pub_key;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多