Как получить публичный ключ из сохранённого секретного? Я написал свой скрип для шифровки и дешифровки сообщений.$nKey = openssl_pkey_new(); openssl_pkey_export($nKey, $pKey); $uKey = openssl_pkey_get_details($nKey); $uKey = $uKey['key']; $data = 'Привет игорь!'; openssl_public_encrypt($data, $nData, $uKey); echo base64_encode($nData) . ""; openssl_private_decrypt($nData,$dData, $pKey); echo $dData . ""; Как видно выше шифровка и дешифровка происходит в одном скрипте, по моей логике я буду хранить закрытый ключ у себя а открытый создавать для пользователей. Вопросы: 1. Как мне на основе сохранённого закрытого ключа, создавать новые открыты? 2. Как мне лучше хранить закрытый ключ у себя и работать с ним?
Для того чтобы получить публичный ключ из сохранённого секретного ключа, можно воспользоваться функцией openssl_pkey_get_public(). Например:$pKey = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC4Fbu6dO2yUfKwguLl0bE38ubDXUpN5cyV6KwqyS2Zb9/KaBvZ eTcvTQDNetq+GettydVpP8auL4lb/e/Twmz0i7LUvUncH3U5Ac1+elftrLIdc4eus fKbut+p2cw4zwV0IRUqDrVxhTwTKmeyrGVTuPdxlF9LjK8VN4vsS7ks4SwIDAQAB AoGASmChK/L2RyYpAIK5qXSGDg8FxcdxwD5xoux30036eLzwbFSqJ+H9lD9nWF6v DL6AG2d+kfjv3udrnvYdM3n/zcR2Y9IL4adXo3+lZx9KHt5wsAdcuHK8hoPq7w/s jeUR0N5nxrW4FJyr7gIgMW7z5ooidxfvI9w90MtPJ0MuwaECQQDPI55CK4LHYJo2A WkEzLbUWapI46xb3RAPWZ0obOzSaFBWx+TTnE9+XYYxYJ+Vp8yQy1aQ7TjyWs2/0 VqJQ4oPfAkEA5FvX3o5CbmZ8BhX+6kOCa1FbiziSB8dLEYaabdDHkaRwU3HTtlyg SBOnfwR6PVNrXIGCXtT9YoSi8d6TnKHe+wJBAO6Uz+fM6FPMjxn5VduAEsmOVAsg ylcVV1xONUtw4u9JV0nXbkDLdrHPSE3vjTY6432eOFlVyoVbtrrrK5DZGE0CQE7d HSt8VlPCHDTK1OO07bB8VzDIvKlKieOy82TSiGdkiy5kjuwS1y2MKvZInlLB2bAq M0T3EqJC5evMxC+s9T0CQE2l+FHvaVM1pN9x0J0MCXsIiskD93BAqc4oGhUS3nVu EhPafyRq6fl18ZyfUdB+tM0Iqk6jx0ZLQEGGw5cTF90= -----END RSA PRIVATE KEY-----'; $pKeyResource = openssl_pkey_get_private($pKey); $details = openssl_pkey_get_details($pKeyResource); $publicKey = $details['key']; echo $publicKey;Для хранения секретного ключа на сервере лучше всего использовать защищенное хранилище, например, vault или хранилище ключей операционной системы. Не рекомендуется хранить секретные ключи в открытом виде в коде или базе данных. Также рекомендуется использовать парольную защиту при доступе к секретному ключу.
MIICXQIBAAKBgQC4Fbu6dO2yUfKwguLl0bE38ubDXUpN5cyV6KwqyS2Zb9/KaBvZ
eTcvTQDNetq+GettydVpP8auL4lb/e/Twmz0i7LUvUncH3U5Ac1+elftrLIdc4eus
fKbut+p2cw4zwV0IRUqDrVxhTwTKmeyrGVTuPdxlF9LjK8VN4vsS7ks4SwIDAQAB
AoGASmChK/L2RyYpAIK5qXSGDg8FxcdxwD5xoux30036eLzwbFSqJ+H9lD9nWF6v
DL6AG2d+kfjv3udrnvYdM3n/zcR2Y9IL4adXo3+lZx9KHt5wsAdcuHK8hoPq7w/s
jeUR0N5nxrW4FJyr7gIgMW7z5ooidxfvI9w90MtPJ0MuwaECQQDPI55CK4LHYJo2A
WkEzLbUWapI46xb3RAPWZ0obOzSaFBWx+TTnE9+XYYxYJ+Vp8yQy1aQ7TjyWs2/0
VqJQ4oPfAkEA5FvX3o5CbmZ8BhX+6kOCa1FbiziSB8dLEYaabdDHkaRwU3HTtlyg
SBOnfwR6PVNrXIGCXtT9YoSi8d6TnKHe+wJBAO6Uz+fM6FPMjxn5VduAEsmOVAsg
ylcVV1xONUtw4u9JV0nXbkDLdrHPSE3vjTY6432eOFlVyoVbtrrrK5DZGE0CQE7d
HSt8VlPCHDTK1OO07bB8VzDIvKlKieOy82TSiGdkiy5kjuwS1y2MKvZInlLB2bAq
M0T3EqJC5evMxC+s9T0CQE2l+FHvaVM1pN9x0J0MCXsIiskD93BAqc4oGhUS3nVu
EhPafyRq6fl18ZyfUdB+tM0Iqk6jx0ZLQEGGw5cTF90=
-----END RSA PRIVATE KEY-----';
$pKeyResource = openssl_pkey_get_private($pKey);
$details = openssl_pkey_get_details($pKeyResource);
$publicKey = $details['key'];
echo $publicKey;Для хранения секретного ключа на сервере лучше всего использовать защищенное хранилище, например, vault или хранилище ключей операционной системы. Не рекомендуется хранить секретные ключи в открытом виде в коде или базе данных. Также рекомендуется использовать парольную защиту при доступе к секретному ключу.
Надеюсь, это поможет вам!