OpenSSL 函数 业 ,精于勤 荒于嬉.

OpenSSL 函数 openssl_pkey_get_public 从证书中解析公钥,以供使用。

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_pkey_get_public

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_get_public从证书中解析公钥,以供使用。

说明

openssl_pkey_get_public(mixed $certificate): resource

openssl_get_publickey()certificate 中解析公钥,供其他函数使用。

参数

certificate

certificate 可以是以下之一:

  1. 一个 X.509 证书资源
  2. 一个file://path/to/file.pem格式的字符串。文件名必须包含一个PEM编码的证书或者密钥(也许二者都有).
  3. 一个 PEM 格式的公钥。

返回值

成功,返回真实的密钥资源标识符,错误,则返回 false

阅读全文 »

OpenSSL 函数 openssl_pkey_new 生成一个新的私钥

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
$private_key = openssl_pkey_new();
$public_key_pem = openssl_pkey_get_details($private_key)['key'];
echo $public_key_pem;
$public_key = openssl_pkey_get_public($public_key_pem);
var_dump($public_key);
?>

阅读全文 »

OpenSSL 函数 openssl_private_decrypt 使用私钥解密数据

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_private_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_private_decrypt 使用私钥解密数据

说明

openssl_private_decrypt(
    string $data,
    string &$decrypted,
    mixed $key,
    int $padding = OPENSSL_PKCS1_PADDING
): bool
警告

本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用 random_int()random_bytes()openssl_random_pseudo_bytes() 替代。

openssl_private_decrypt() 解密先前通过 openssl_public_encrypt() 函数加密的 data 并将结果保存至decrypted变量中。

你可以用该函数来解密只对你可用的数据。

参数

data

decrypted

key

key 必须是和用来加密数据所用公钥对应的私钥。

padding

padding 可以是如下值: OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 true, 或者在失败时返回 false

参见

阅读全文 »

OpenSSL 函数 openssl_private_encrypt 使用私钥加密数据

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_private_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_private_encrypt使用私钥加密数据

说明

openssl_private_encrypt(
    string $data,
    string &$crypted,
    mixed $key,
    int $padding = OPENSSL_PKCS1_PADDING
): bool

openssl_private_encrypt() 使用私钥 key 加密数据 data 并且将结果保存至变量 crypted中。加密后的数据可以通过openssl_public_decrypt()函数来解密。

该函数用来签名数据(或者哈希)让别人相信数据并不是其他人写的。

参数

data

crypted

key

padding

padding 可以是如下之一: OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 true, 或者在失败时返回 false

参见

阅读全文 »

OpenSSL 函数 openssl_public_decrypt 使用公钥解密数据

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_public_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_public_decrypt使用公钥解密数据

说明

openssl_public_decrypt(
    string $data,
    string &$decrypted,
    mixed $key,
    int $padding = OPENSSL_PKCS1_PADDING
): bool

openssl_public_decrypt() 解密先前由 openssl_private_encrypt() 加密的数据 data 并且将结果保存至变量 decrypted中。

你可以用该函数来校验消息是否是私钥拥有者写的。

参数

data

decrypted

key

key 必须是和用来加密数据的私钥配对的公钥。

padding

padding 可以是如下至 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 true, 或者在失败时返回 false

参见

阅读全文 »

OpenSSL 函数 openssl_public_encrypt 使用公钥加密数据

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_public_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_public_encrypt使用公钥加密数据

说明

openssl_public_encrypt(
    string $data,
    string &$crypted,
    mixed $key,
    int $padding = OPENSSL_PKCS1_PADDING
): bool

openssl_public_encrypt() 使用公钥key解密数据 data 并且将结果保存到变量crypted中。 加密的数据可以通过openssl_private_decrypt()函数解密。

该函数可以用来加密数据,供该公钥匹配的私钥拥有者读取。 它也可以用来在数据库中存储安全数据。

参数

data

crypted

这将保存加密的结果。

key

公钥。

padding

padding can be one of OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 true, 或者在失败时返回 false

参见

阅读全文 »

OpenSSL 函数 openssl_random_pseudo_bytes 生成一个伪随机字节串

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
for ($i = -1;
 $i <= 4;
 $i++) {
    $bytes = openssl_random_pseudo_bytes($i, $cstrong);
    $hex   = bin2hex($bytes);
    echo "Lengths: Bytes: $i and Hex: " . strlen($hex) . PHP_EOL;
    var_dump($hex);
    var_dump($cstrong);
    echo PHP_EOL;
}
?>

阅读全文 »

OpenSSL 函数 openssl_seal 密封 (加密) 数据

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
// $data is assumed to contain the data to be sealed// fetch public keys for our recipients, and ready them$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// Repeat for second recipient$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// seal message, only owners of $pk1 and $pk2 can decrypt $sealed with keys// $ekeys[0] and $ekeys[1] respectively.openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2));
// free the keys from memoryopenssl_free_key($pk1);
openssl_free_key($pk2);
?>

阅读全文 »

OpenSSL 函数 openssl_sign Generate signature

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
// $data is assumed to contain the data to be signed// fetch private key from file and ready it$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");
// compute signatureopenssl_sign($data, $signature, $pkeyid);
// free the key from memoryopenssl_free_key($pkeyid);
?>

      示例2
<?php 
//data you want to sign$data = 'my data';
//create new private and public key$new_key_pair = openssl_pkey_new(array(    "private_key_bits" => 2048,    "private_key_type" => OPENSSL_KEYTYPE_RSA,));
openssl_pkey_export($new_key_pair, $private_key_pem);
$details = openssl_pkey_get_details($new_key_pair);
$public_key_pem = $details['key'];
//create signatureopenssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);
//save for laterfile_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $signature);
//verify signature$r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");
var_dump($r);
?>

阅读全文 »

OpenSSL 函数 openssl_spki_export_challenge 导出与签名公钥和挑战相关的挑战字符串

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');
$challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spkac));
?>

      示例2
<?php 
$challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $_POST['spkac']));
?><keygen name="spkac" challenge="challenge string" keytype="RSA">

阅读全文 »

OpenSSL 函数 openssl_spki_export 通过签名公钥和挑战导出一个可用的PEM格式的公钥

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');
$pubKey = openssl_spki_export(preg_replace('/SPKAC=/', '', $spkac));
if ($pubKey) {
    echo $pubKey;
}
?>

      示例2
<?php 
$spkac = openssl_spki_export(preg_replace('/SPKAC=/', '', $_POST['spkac']));
if ($spkac != NULL) {
    echo $spkac;
}
 else {
    echo "Extraction of pub key failed";
}
?><keygen name="spkac" challenge="challenge string" keytype="RSA">

阅读全文 »

OpenSSL 函数 openssl_spki_new 生成一个新的签名公钥和挑战

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'testing');
if ($spkac !== NULL) {
    echo $spkac;
}
 else {
    echo "SPKAC generation failed";
}
?>

阅读全文 »

OpenSSL 函数 openssl_spki_verify 验证签名公钥和挑战。

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');
if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac))) {
    echo $spkac;
}
 else {
    echo "SPKAC validation failed";
}
?>

      示例2
<?php 
if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $_POST['spkac']))) {
    echo $spkac;
}
 else {
    echo "SPKAC validation failed";
}
?><keygen name="spkac" challenge="challenge string" keytype="RSA">

阅读全文 »

OpenSSL 函数 openssl_verify 验证签名

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

      示例1
<?php 
// $data and $signature are assumed to contain the data and the signature// fetch public key from certificate and ready it$pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");
// state whether signature is okay or not$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
    echo "good";
}
 elseif ($ok == 0) {
    echo "bad";
}
 else {
    echo "ugly, error checking signature";
}
// free the key from memoryopenssl_free_key($pubkeyid);
?>

      示例2
<?php 
//data you want to sign$data = 'my data';
//create new private and public key$private_key_res = openssl_pkey_new(array(    "private_key_bits" => 2048,    "private_key_type" => OPENSSL_KEYTYPE_RSA,));
$details = openssl_pkey_get_details($private_key_res);
$public_key_res = openssl_pkey_get_public($details['key']);
//create signatureopenssl_sign($data, $signature, $private_key_res, "sha1WithRSAEncryption");
//verify signature$ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA1);
if ($ok == 1) {
    echo "valid";
}
 elseif ($ok == 0) {
    echo "invalid";
}
 else {
    echo "error: ".openssl_error_string();
}
?>

阅读全文 »

OpenSSL 函数 openssl_x509_check_private_key 检查私钥是否对应于证书

发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数

openssl_x509_check_private_key

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_check_private_key检查私钥是否对应于证书

说明

openssl_x509_check_private_key(mixed $cert, mixed $key): bool

检查给定的私钥 key 是否和证书 cert 对应。

警告

这个函数不会检查密钥key是否真的是私钥。 它只是比较了和密钥匹配的公共材料 (比如,RSA密钥的指数和模量) 和/或密钥参数(比如,EC密钥的参数)。

这也意味着,比如,提供给key赋一个公钥值,该函数可能返回 true.

参数

cert

证书。

key

私钥。

返回值

如果给定的私钥 key 和证书 cert对应, 返回true 否则返回 false .

阅读全文 »

OpenSSL 函数 openssl_x509_checkpurpose 验证是否可以为特定目的使用证书

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

openssl_x509_checkpurpose

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_checkpurpose验证是否可以为特定目的使用证书

说明

openssl_x509_checkpurpose(
    mixed $x509cert,
    int $purpose,
    array $cainfo = array(),
    string $untrustedfile = ?
): int

openssl_x509_checkpurpose() 检查证书以查看它是否可用于指定目的 purpose.

参数

x509cert

被检查的证书。

purpose

openssl_x509_checkpurpose() 目的
常量名 描述
X509_PURPOSE_SSL_CLIENT 证书是否可以用于SSL连接的客户端?
X509_PURPOSE_SSL_SERVER 证书是否可以用于SSL连接的服务器端?
X509_PURPOSE_NS_SSL_SERVER 证书是否可以用于Netscape SSL服务器?
X509_PURPOSE_SMIME_SIGN 证书是否可以用来签名 S/MIME 邮件?
X509_PURPOSE_SMIME_ENCRYPT 正式是否可用用来加密 S/MIME 邮件?
X509_PURPOSE_CRL_SIGN 证书是否可以用来签名证书撤销列表(CRL)?
X509_PURPOSE_ANY 证书是否可以用于任何目的?
这些选项不是位字段——您只能指定一个字段!

cainfo

cainfo 应该是一个受信任的 CA 文件/文件夹组成的数组,如Certificate Verification所描述的一样。

untrustedfile

如果指定,这应该是PEM编码文件的名称,该文件持有证书,可以用来帮助验证证书,尽管从该文件中获得的证书不受信任。

返回值

如果证书可以用于预期目的,返回 true,如果不行,则返回 false 错误便会返回 -1。

阅读全文 »

OpenSSL 函数 openssl_x509_export_to_file 导出证书至文件

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

openssl_x509_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_export_to_file导出证书至文件

说明

openssl_x509_export_to_file(mixed $x509, string $outfilename, bool $notext = true): bool

openssl_x509_export_to_file()x509 以PEM编码的格式保存到名为 outfilename 的文件中。

参数

x509

参见密钥/证书参数以获取有效值列表。

outfilename

输出文件的路径。

notext

可选参数 notext 影响输出的冗余度。如果设为 false,输出内容将包含附加的人类可读信息。notext 的缺省值为 true

返回值

成功时返回 true, 或者在失败时返回 false

阅读全文 »

OpenSSL 函数 openssl_x509_export 以字符串格式导出证书

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

openssl_x509_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_export以字符串格式导出证书

说明

openssl_x509_export(mixed $x509, string &$output, bool $notext = true): bool

openssl_x509_export()x509 以PEM编码的格式导出到名为 output 的字符串类型的变量中。

参数

x509

参见密钥/证书参数以获取有效值列表。

output

成功,将会存储 PEM.

notext

可选参数 notext 影响输出的冗余度。如果设为 false,输出内容将包含附加的人类可读信息。notext 的缺省值为 true

返回值

成功时返回 true, 或者在失败时返回 false

阅读全文 »

OpenSSL 函数 openssl_x509_fingerprint 计算一个给定的x.509证书的指纹或摘要

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

openssl_x509_fingerprint

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

openssl_x509_fingerprint计算一个给定的x.509证书的指纹或摘要

说明

openssl_x509_fingerprint(mixed $x509, string $hash_algorithm = "sha1", bool $raw_output = false): string

openssl_x509_fingerprint() 返回x509的字符串类型的摘要。

参数

x509

参见密钥/证书参数以获取有效值列表。

hash_algorithm

使用的摘要方法或散列算法,比如, "sha256", openssl_get_md_methods()摘要算法之一。

raw_output

设置为 true时,输出原始二进制数据。设置为 false时,输出小写的16进制字符串。

返回值

将包含计算的证书指纹的字符串返回为小写16进制格式,除非将raw_output设置为TRUE,在这种情况下会返回消息摘要的原始二进制表示形式。

失败则返回 false .

阅读全文 »

OpenSSL 函数 openssl_x509_free 释放证书资源

发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数

openssl_x509_free

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_free释放证书资源

说明

openssl_x509_free(resource $x509cert): void

openssl_x509_free() 从内存中释放和指定 x509cert资源相关联的证书。

参数

x509cert

返回值

没有返回值。

阅读全文 »

全部博文(1580)
集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。