EDIT: I found out that the keys aren't the problem like I said in the comments. I can use them without any issues to encrypt and decrypt data on OpenSSL.
But I need to decrypt a string on OpenSSL that was previously encrypted via Crypto++ and that's not working.
I'll post additional details later.
Merhaba, ben bir RSA ortak Kripto ile üretilen anahtar + + ve şimdi PHP ve OpenSSL'de üzerinden şifresini (hala başarısız) çalışıyorum kullanarak bir dize şifreli var.
Ben ne yapıyorum:
- Base64 veya kodlanmış onaltılık DEĞİLDİR özel anahtar "rsa-private.key" adlı bir dosyada saklanır
- Şifreli mesaj "message.txt" saklanır (onaltılık kodlanmış)
ADIM 1: $key = file_get_contents("rsa-private.key");
: yoluyla özel anahtarı yükleyin
ADIM 2: Aşağıdaki işlevi kullanarak PEM biçime anahtarı dönüştürün:
<?php
function pkcs8_to_pem($der) {
static $BEGIN_MARKER = "-----BEGIN PRIVATE KEY-----";
static $END_MARKER = "-----END PRIVATE KEY-----";
$value = base64_encode($der);
$pem = $BEGIN_MARKER . "\n";
$pem .= chunk_split($value, 64, "\n");
$pem .= $END_MARKER . "\n";
return $pem;
}
$PEMprivatekey = pkcs8_to_pem($key);
?>
(Stackoverflow.com/questions/1357569 /)
ADIM 3: OpenSSL'de tarafından daha sonraki kullanım için anahtar hazırlayın: (herhangi bir sorun olmadan)
<?php
$privateKey = openssl_get_privatekey($PEMprivatekey);
if (!$privateKey) {
echo "Cannot get public key";
}
?>
ADIM 4: mesajı alın ve aşağıdaki işlevi kullanarak mesajı deşifre:
<?php
function hex_to_str($hex){
for ($i=0; $i < strlen($hex)-1; $i+=2) {
$string .= chr(hexdec($hex[$i].$hex[$i+1])); }
return $string;
}
$message = file_get_contents("message.txt");`
$encryptedstring = hex_to_str($message);
?>
ADIM 5: dize azalmak: (çalışmıyor)
<?php
openssl_private_decrypt($encryptedstring, $decrypteddata, $privateKey);
if (!$decrypteddata) {
echo "........"; } else { echo $decrypteddata; }
?>
$ Decrypteddata her zaman boştur.
Çalışmıyor değil neden ben çözemiyorum. Herkes yapıyorum yanlış bir şey fark ettim?