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
): resourceopenssl_get_publickey() 从
certificate
中解析公钥,供其他函数使用。参数
-
certificate
-
certificate
可以是以下之一:- 一个 X.509 证书资源
- 一个file://path/to/file.pem格式的字符串。文件名必须包含一个PEM编码的证书或者密钥(也许二者都有).
- 一个 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
): boolopenssl_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
): boolopenssl_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
): boolopenssl_public_encrypt() 使用公钥
key
解密数据data
并且将结果保存到变量crypted
中。 加密的数据可以通过openssl_private_decrypt()函数解密。该函数可以用来加密数据,供该公钥匹配的私钥拥有者读取。 它也可以用来在数据库中存储安全数据。
参数
-
data
-
-
crypted
-
这将保存加密的结果。
-
key
-
公钥。
-
padding
-
padding
can be one ofOPENSSL_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
= ?
): intopenssl_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
): boolopenssl_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
): boolopenssl_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
): stringopenssl_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
): voidopenssl_x509_free() 从内存中释放和指定
x509cert
资源相关联的证书。参数
-
x509cert
-
返回值
没有返回值。
-
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)