openssl_get_cipher_methods
(PHP 5 >= 5.3.0, PHP 7)
openssl_get_cipher_methods — Gets available cipher methods
Описание
array openssl_get_cipher_methods
([ bool
$aliases
= false
] )Gets a list of available cipher methods.
Список параметров
-
aliases
-
Set to
TRUE
if cipher aliases should be included within the returned array.
Возвращаемые значения
An array of available cipher methods.
Примеры
Пример #1 openssl_get_cipher_methods() example
Shows how the available ciphers might look, and also which aliases might be available.
<?php
$ciphers = openssl_get_cipher_methods();
$ciphers_and_aliases = openssl_get_cipher_methods(true);
$cipher_aliases = array_diff($ciphers_and_aliases, $ciphers);
print_r($ciphers);
print_r($cipher_aliases);
?>
Результатом выполнения данного примера будет что-то подобное:
Array ( [0] => AES-128-CBC [1] => AES-128-CFB [2] => AES-128-CFB1 [3] => AES-128-CFB8 [4] => AES-128-ECB [5] => AES-128-OFB [6] => AES-192-CBC [7] => AES-192-CFB [8] => AES-192-CFB1 [9] => AES-192-CFB8 [10] => AES-192-ECB [11] => AES-192-OFB [12] => AES-256-CBC [13] => AES-256-CFB [14] => AES-256-CFB1 [15] => AES-256-CFB8 [16] => AES-256-ECB [17] => AES-256-OFB [18] => BF-CBC [19] => BF-CFB [20] => BF-ECB [21] => BF-OFB [22] => CAST5-CBC [23] => CAST5-CFB [24] => CAST5-ECB [25] => CAST5-OFB [26] => DES-CBC [27] => DES-CFB [28] => DES-CFB1 [29] => DES-CFB8 [30] => DES-ECB [31] => DES-EDE [32] => DES-EDE-CBC [33] => DES-EDE-CFB [34] => DES-EDE-OFB [35] => DES-EDE3 [36] => DES-EDE3-CBC [37] => DES-EDE3-CFB [38] => DES-EDE3-OFB [39] => DES-OFB [40] => DESX-CBC [41] => IDEA-CBC [42] => IDEA-CFB [43] => IDEA-ECB [44] => IDEA-OFB [45] => RC2-40-CBC [46] => RC2-64-CBC [47] => RC2-CBC [48] => RC2-CFB [49] => RC2-ECB [50] => RC2-OFB [51] => RC4 [52] => RC4-40 [53] => aes-128-cbc [54] => aes-128-cfb [55] => aes-128-cfb1 [56] => aes-128-cfb8 [57] => aes-128-ecb [58] => aes-128-ofb [59] => aes-192-cbc [60] => aes-192-cfb [61] => aes-192-cfb1 [62] => aes-192-cfb8 [63] => aes-192-ecb [64] => aes-192-ofb [65] => aes-256-cbc [66] => aes-256-cfb [67] => aes-256-cfb1 [68] => aes-256-cfb8 [69] => aes-256-ecb [70] => aes-256-ofb [71] => bf-cbc [72] => bf-cfb [73] => bf-ecb [74] => bf-ofb [75] => cast5-cbc [76] => cast5-cfb [77] => cast5-ecb [78] => cast5-ofb [79] => des-cbc [80] => des-cfb [81] => des-cfb1 [82] => des-cfb8 [83] => des-ecb [84] => des-ede [85] => des-ede-cbc [86] => des-ede-cfb [87] => des-ede-ofb [88] => des-ede3 [89] => des-ede3-cbc [90] => des-ede3-cfb [91] => des-ede3-ofb [92] => des-ofb [93] => desx-cbc [94] => idea-cbc [95] => idea-cfb [96] => idea-ecb [97] => idea-ofb [98] => rc2-40-cbc [99] => rc2-64-cbc [100] => rc2-cbc [101] => rc2-cfb [102] => rc2-ecb [103] => rc2-ofb [104] => rc4 [105] => rc4-40 ) Array ( [18] => AES128 [19] => AES192 [20] => AES256 [21] => BF [26] => CAST [27] => CAST-cbc [32] => DES [47] => DES3 [48] => DESX [50] => IDEA [55] => RC2 [82] => aes128 [83] => aes192 [84] => aes256 [85] => bf [90] => blowfish [91] => cast [92] => cast-cbc [97] => des [112] => des3 [113] => desx [115] => idea [120] => rc2 )
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Криптографические расширения
- OpenSSL
- openssl_cipher_iv_length
- openssl_csr_export_to_file
- openssl_csr_export
- openssl_csr_get_public_key
- openssl_csr_get_subject
- openssl_csr_new
- openssl_csr_sign
- openssl_decrypt
- openssl_dh_compute_key
- openssl_digest
- openssl_encrypt
- openssl_error_string
- openssl_free_key
- openssl_get_cert_locations
- openssl_get_cipher_methods
- openssl_get_md_methods
- openssl_get_privatekey
- openssl_get_publickey
- openssl_open
- openssl_pbkdf2
- openssl_pkcs12_export_to_file
- openssl_pkcs12_export
- openssl_pkcs12_read
- openssl_pkcs7_decrypt
- openssl_pkcs7_encrypt
- openssl_pkcs7_sign
- openssl_pkcs7_verify
- openssl_pkey_export_to_file
- openssl_pkey_export
- openssl_pkey_free
- openssl_pkey_get_details
- openssl_pkey_get_private
- openssl_pkey_get_public
- openssl_pkey_new
- openssl_private_decrypt
- openssl_private_encrypt
- openssl_public_decrypt
- openssl_public_encrypt
- openssl_random_pseudo_bytes
- openssl_seal
- openssl_sign
- openssl_spki_export_challenge
- openssl_spki_export
- openssl_spki_new
- openssl_spki_verify
- openssl_verify
- openssl_x509_check_private_key
- openssl_x509_checkpurpose
- openssl_x509_export_to_file
- openssl_x509_export
- openssl_x509_fingerprint
- openssl_x509_free
- openssl_x509_parse
- openssl_x509_read
Коментарии
May be useful for cyphers execution speed.
<?php
const TEST_COUNT = 100000;
const SOURCE = 'Note that HTML tags are not allowed in the posts, but the note formatting is preserved.';
const KEY = "password";
function TESTER( $testing_function, $argument )
{
$t = microtime(true);
for ($test_iterator = 0; $test_iterator < TEST_COUNT; $test_iterator++) {
$testing_function( $argument );
}
return round(microtime(true) - $t, 4);
}
$crypt = function($cipher) {
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
openssl_encrypt(SOURCE, $cipher, KEY, $options=0, $iv);
};
$methods = openssl_get_cipher_methods(false);
array_splice( $methods, 0, count($methods) / 2);
$timings = array();
foreach ($methods as $cypher) {
$time = TESTER( $crypt, $cypher );
$timings[ $cypher ] = $time;
echo str_pad($cypher, 40, ' ', STR_PAD_LEFT), " have time ", str_pad($time, 8, STR_PAD_LEFT), ' seconds. ', PHP_EOL;
}
uasort($timings, function($a, $b){
return $a <=> $b;
});
$min_time = round(reset($timings) / TEST_COUNT, 7);
$min_cypher = key($timings);
$max_time = round(end($timings) / TEST_COUNT, 7);
$max_cypher = key($timings);
echo '-------------', PHP_EOL;
echo "Total tests: ", count($timings), PHP_EOL;
echo "Max timing : {$max_time} seconds for `{$max_cypher}` algorithm.", PHP_EOL;
echo "Min timing : {$min_time} seconds for `{$min_cypher}` algorithm.", PHP_EOL;
echo 'Details: ', PHP_EOL;
foreach ($timings as $m => $t) {
echo '- ', str_pad($t, 8, STR_PAD_LEFT), " seconds for `{$m}`", PHP_EOL;
}
echo PHP_EOL;