PHP.mk документација

openssl_decrypt

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.openssl-decrypt.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.openssl-decrypt.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
openssl_decrypt

Референца за `function.openssl-decrypt.php` со подобрена типографија и навигација.

function.openssl-decrypt.php

openssl_decrypt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_decryptГи дешифрира податоците

= NULL

openssl_decrypt(
         string $data,
         string $cipher_algo,
         Иницијализира контекст за инкрементално хеширање string $passphrase,
         int $options = 0,
         string $iv = "",
         ?string $tag = null,
         string $aad = ""
): string|false

Зема суров или base64 кодиран стринг и го дешифрира користејќи даден метод и лозинка.

Параметри

data

Шифрираната порака што треба да се дешифрира.

cipher_algo

Податоците на пораката во чист текст што треба да се шифрираат. openssl_get_cipher_methods().

passphrase

Методот на шифрирање. За список на достапни методи за шифрирање, користете NUL Лозинката. Ако лозинката е пократка од очекуваното, таа тивко се дополнува со

Безбедност: стандардниот сет на знаци

знаци; ако лозинката е подолга од очекуваното, таа тивко се скратува. passphrase не се користи функција за изведување клучеви за NUL како што може да сугерира неговото име. Единствената операција што се користи е дополнување со

options

options must be the public key that corresponds to the private key that will be used to decrypt the data. OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING or OPENSSL_DONT_ZERO_PAD_KEY.

iv

е битна дизјункција на знаменцатаnull Не- NUL Вектор за иницијализација. Ако IV е пократок од очекуваното, се дополнува со

tag

Ознаката за автентикација во AEAD режим на шифрирање. Ако е неточна, автентикацијата пропаѓа и функцијата враќа false.

Безбедност: стандардниот сет на знаци

се мери за должина. tag не се проверува од функцијата. Одговорност на повикувачот е да се осигура дека должината на ознаката одговара на должината на ознаката добиена кога openssl_encrypt() е повикана. Инаку, дешифрирањето може да успее ако дадената ознака одговара само на почетокот на правилната ознака.

aad

Ознака за автентикација предадена преку референца кога се користи AEAD режим на шифрирање (GCM или CCM).

Вратени вредности

Дешифрираниот стринг при успех или false при неуспех.

Errors/Exceptions

Емитува E_WARNING грешка на ниво ако се помине непознат алгоритам за шифрирање преку cipher_algo parameter.

Емитува E_WARNING грешка на ниво ако се помине непознат алгоритам за шифрирање преку iv parameter.

Дневник на промени

Верзија = NULL
8.1.0 tag сега е null.
7.1.0 На tag and aad додадени се параметри.

Види Исто така

Белешки од корисници 4 белешки

Hernanibus
пред 9 години
Parameters may seem obvius to some but not for everyone so:

- $data can be as the description says raw or base64. If no $option is set (this is, if value of 0 is passed in this parameter), data will be assumed to be base64 encoded. If parameter OPENSSL_RAW_DATA is set, it will be understood as row data.

- $password (key) is a String of [pseudo] bytes as those generated by the function openssl_random_pseudo_bytes().

- $options as (as for 2016) two possible values OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING. Setting both can be done by OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING. If no OPENSSL_ZERO_PADDING is specify, default pading of PKCS#7 will be done as it's been observe by [openssl at mailismagic dot com]'s coment in openssl_encrypt()

- $iv is as in the case of $password, a String of bytes. Its length depends on the algorithm used. May be the best way to generate an $iv is by:

<?php
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('your algorithm'));// for example you algorithm = 'AES-256-CTR'
?>
lucianonapoli at yahoo dot it
пред 9 години
The parameter string $password must be in binary form and is derived from the exadecimal key value.

Example:

encrypting in command line console with openssl
openssl AES-256-CBC -K 5ae1b8a17bad4da4fdac796f64c16ecd -iv 34857d973953e44afb49ea9d61104d8c -in doc.txt -out doc.enc.txt

decripting in php
$key = hex2bin('5ae1b8a17bad4da4fdac796f64c16ecd');
$iv = hex2bin('34857d973953e44afb49ea9d61104d8c');

$output = openssl_decrypt($encstr, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
markagius dot co dot uk
пред 8 години
openssl_decrypt(..) works with most but not all method types.
This list can vary, depending on the data (Message) and key (Password) used.

See the following code and edit the $text and $password values.
Code checks if text is the same after encrypting then decrypting it.

Note:
  You can still use openssl_encrypt(..) with;
  User enters 'Log-in password'
  (Encrypted and stored using openssl_encrypt)
  Next time.
  User logs-in with 'Log-in password'
  (Check that encrypted 'Log-in password' = stored data)

<CODE>
  // Please edit $password=... and $text=...

  $password = "This is a journey into sound";

  $text = "";
  for($charNo=0; $charNo<=255; $charNo=$charNo+1){
    // if($charNo==127) {$charNo=$charNo+1;}
    if(!$charNo<127){
      // $text = $text."&#x".strtoupper(dechex($charNo)).";";
      $text = $text.chr($charNo);
    } else {
      $text = $text.chr($charNo);
    }
  }

$text = "This is a test message.";

  print "<TABLE BORDER=\"1\">\n";
  print "<TR><TD><B>Encryption type:</B></TD><TD><B>String after converting back:</B></TD></TR>\n";
  $ciphers = openssl_get_cipher_methods();
  for($pointer=0; $pointer<count($ciphers); $pointer=$pointer+1){
    $edit  = EncryptDecrypt($text, true,  $password, $ciphers[$pointer]);
    $check = EncryptDecrypt($edit, false, $password, $ciphers[$pointer]);
    if($text!=$check){
      $info  = $check;
      print "<TR><TD>".$ciphers[$pointer]."</TD><TD>".$info."</TD></TR>\n";
    }
  }
  print "</TABLE>\n";

function EncryptDecrypt($oldText, $encryptIt=true, $password="PASSWORD", $encryptType=""){
  $ciphers = openssl_get_cipher_methods();
  $foundEncType = false;
  for($pointer=0; $pointer<count($ciphers); $pointer=$pointer+1){
    if($ciphers[$pointer]==$encryptType){$foundEncType=true;}
  }
  if(!$foundEncType){
    $encryptType = "RC2-64-CBC"; // Default value used if not set or listed.
  }
  if($encryptIt){
    $newText = openssl_encrypt($oldText,$encryptType,$password);
  } else {
    $newText = openssl_decrypt($oldText,$encryptType,$password);
  }
  return $newText;
}
</CODE>
The following (sometimes) don't work:
    DES-EDE3-CFB1    (sometimes)
    aes-128-gcm
    aes-192-gcm
    aes-256-gcm
    des-ede3-cfb1        (sometimes)
    id-aes128-GCM
    id-aes192-GCM
    id-aes256-GCM
ittasks at gmail dot com
12 години пред
in case that hosting do not provide openssl_encrypt decrypt functions - it could be mimiced via commad prompt executions  
this functions will check is if openssl is installed and try to use it by default

function sslPrm()
{
 return array("your_password","IV (optional)","aes-128-cbc");
}
function sslEnc($msg)
{
  list ($pass, $iv, $method)=sslPrm();
  if(function_exists('openssl_encrypt'))
     return urlencode(openssl_encrypt(urlencode($msg), $method, $pass, false, $iv));
  else
     return urlencode(exec("echo \"".urlencode($msg)."\" | openssl enc -".urlencode($method)." -base64 -nosalt -K ".bin2hex($pass)." -iv ".bin2hex($iv)));
}
function sslDec($msg)
{
  list ($pass, $iv, $method)=sslPrm();
  if(function_exists('openssl_decrypt'))
     return trim(urldecode(openssl_decrypt(urldecode($msg), $method, $pass, false, $iv)));
  else
     return trim(urldecode(exec("echo \"".urldecode($msg)."\" | openssl enc -".$method." -d -base64 -nosalt -K ".bin2hex($pass)." -iv ".bin2hex($iv))));
}

//example of usage:
$r= sslEnc("This is encryption/decryption test!");
echo "<br>\n".$r.":".sslDec($r);
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.