首页 > php学习 > PHP中的OpenSSL函数
2019
06-17

PHP中的OpenSSL函数

openssl_cipher_iv_length(string $method):int
    获取指定加密算法($method)的加密结果初始化向量(iv)长度
openssl_csr_export_to_file(mixed $csr,string $outfilename[, bool $notext = true]):bool
    获取证书签名请求($csr,一般由openssl_csr_new()返回) 并保存在以$outfilename命名的PEM格式文件中
    $notext影响输出的冗余度。如果为FALSE,输出内容将包含附加的人类可读信息。
openssl_csr_export(mixed $csr,string &$out[,bool $notext = true]):bool
    将csr通过引用保存成PEM格式的字符串($out)
openssl_csr_get_public_key(mixed $csr):resource
    从csr中提取公钥供其他函数使用
openssl_csr_get_subject(mixed $csr[, bool $use_shortnames = true]):array
    返回csr中专有名称信息的主题,包含通用名称 (CN), 机构名称 (O), 国家名 (C) 等字段。
    use_shortnames控制着返回数组中的索引名称,默认TRUE使用简称形式,为FALSE则使用全称形式,如CN就是commonName的简称形式
openssl_csr_new(array $dn,resource &$privkey [, array $configargs [, array $extraattribs ]):mixed
    根据dn提供的信息生成新的CSR(证书签名请求)(必须安装有效的openssl.cnf以保证此函数正确运行)
    $dn在证书中使用的专有名称或主题字段。
    $privkey应该被设置为由openssl_pkey_new()函数预先生成(或者以其他方式从openssl_pkey函数集中获得)的私钥。该密钥的相应公共部分将用于签署CSR.
    $configargs可以通过设置configargs的config_section_section项来指定配置文件部分(默认是通过系统里的openssl.conf配置来初始化请求)。 您还可以通过将config键的值设置为您想要使用的文件路径来指定另一个openssl配置文件。如果在configargs中存在下列键,它们的行为就像在openssl.conf中一样。如下表所示:
configargs 键 type 等同于 openssl.conf 描述
digest_alg string default_md 摘要算法或签名哈希算法,通常是 openssl_get_md_methods() 之一。
x509_extensions string x509_extensions 选择在创建x509证书时应该使用哪些扩展
req_extensions string req_extensions 创建CSR时,选择使用哪个扩展
private_key_bits integer default_bits 指定应该使用多少位来生成私钥
private_key_type integer none 选择在创建CSR时应该使用哪些扩展。可选值有OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH,OPENSSL_KEYTYPE_RSAOPENSSL_KEYTYPE_EC. 默认值是 OPENSSL_KEYTYPE_RSA.
encrypt_key boolean encrypt_key 是否应该对导出的密钥(带有密码短语)进行加密?
config string N/A 自定义 openssl.conf 文件的路径。
    $extraattribs用于为CSR指定额外的配置选项。dn 和 extraattribs 都是关联数组它们的键被转换成OIDs,并应用到请求的相关部分。
openssl_csr_sign(mixed $csr,mixed $cacert,mixed $priv_key,int $days [, array $configargs [, int $serial = 0 ]]):resource
    从给定的CSR生成一个x509证书资源(必须安装有效的openssl.cnf以保证此函数正确运行)
    $csr由openssl_csr_new()生成的CSR. 也可以是指向PEM编码的CSR文件路径(类似file://path/csr格式),或一个由openssl_csr_export()生成的字符串。
    $cacert生成的证书将由cacert签名。 若该值为NULL, 生成的证书将是自签名证书。
    $priv_key是cacert证书对应的私钥。
    $days指定生成的证书在几天内有效
    $configargs通过configargs设置CSR签名(和openssl_csr_new()方法的参数用法相同)
    $serial可选的发行证书编号。如果没有指定默认值为0.
openssl_decrypt(string $data,string $method,string $key[,int $options=0 [,string $iv=""[,string $tag="" [,string $aad="" ]]]]):string
    采用原始或base64编码的字符串,并使用给定的方法和密钥对其进行解密。
    data将被解密的密文。
    method加密算法,使用openssl_get_cipher_methods()函数获取可用的加密算法列表
    key密钥
    options两个常量中的一个OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING.
    iv非空的初始化向量
    tagAEAD密码模式中的身份验证标签。 如果是错误的,验证失败,函数返回FALSE
    aad额外的认证数据
openssl_dh_compute_key(string $pub_key,resource $dh_key):string
    计算远程DH密钥(公钥)和本地DH密钥的共享密钥
    pub_key:公钥
    dh_key:DH 密钥
openssl_digest(string $data,string $method[,bool $raw_output=false]):string
    使用给定的方法计算给定数据的摘要哈希值,并返回一个原始的或16进制编码的字符串
    raw_output为TRUE时返回原始输出数据,否则返回16进制
openssl_encrypt(string $data,string $method,string $key[,int $options = 0[,string $iv="" [,string &$tag=NULL [,string $aad=""[,int $tag_length=16]]]]] ):string
    以指定的方式和key加密数据,返回原始或 base64 编码后的字符串
    options是以下标记的按位或: OPENSSL_RAW_DATA 、OPENSSL_ZERO_PADDING
    iv非NULL的初始化向量
    tag使用AEAD密码模式(GCM 或 CCM)时传引用的验证标签
    aad附加的验证数据。
    tag_length验证tag的长度。GCM 模式时,它的范围是4到16
openssl_error_string():string
    从openSSL库返回最近一个错误。错误消息已被队列化,因此这个函数可以多次调用用来收集所有的信息
openssl_free_key(resource $key_identifier):void
    从内存中释放和指定的key_identifier相关联的密钥
openssl_get_cert_locations():array
    返回一个数组,其中包含要搜索SSL证书的可用证书位置的信息
openssl_get_cipher_methods([bool $aliases=false]):array
    获取所有可用的加密算法列表
    aliases为TRUE,返回的array中将会包含加密算法的别名
openssl_get_md_methods([bool $aliases=false]):array
    获取所有可用的摘要算法列表
    aliases为TRUE,返回的array中将会包含摘要的别名
openssl_get_privatekey:openssl_pkey_get_private的别名
openssl_get_publickey:openssl_pkey_get_public的别名
openssl_open(string $sealed_data,string &$open_data,string $env_key,mixed $priv_key_id[,string $method="RC4"[,string &$iv]]):bool
    使用与密钥标识符priv_key_id和信封密钥env_key相关联的私钥打开 (解密) sealed_data 数据, 使用解密后的数据填充open_data。
openssl_pbkdf2(string $password,string $salt,int $key_length,int $iterations[,string $digest_algorithm ="sha1"]):string
    加盐加密,key_length希望输出密钥的长度。iterations需要的迭代次数(建议至少10000)。digest_algorithm散列或摘要算法,默认SHA-1
    返回值为原始的二进制字符串
openssl_pkey_export_to_file(mixed $key,string $outfilename[,string $passphrase[,array $configargs]]):bool
    将 ascii 格式 (PEM编码)的 key 保存到名为outfilename文件中
    passphrase:密钥通过值为passphrase的密码来保护
    configargs:可以用来调整导出流程,通过指定或者覆盖openssl配置文件选项。
openssl_pkey_export(mixed $key,string &$out[,string $passphrase[,array $configargs]]):bool
    将key当作 PEM 编码字符串导出并且将之保存到out(通过引用传递)中
openssl_pkey_free(resource $key):void
    释放由openssl_pkey_new()创建的私钥
openssl_pkey_get_details(resource $key):array
    返回密钥详情(位长度,密钥,类型)
openssl_pkey_get_private(mixed $key[,string $passphrase=""]):resource
    获取私钥,解析key供其他函数使用
    key:可以是包含PEM编码的证书或者私钥 (可能都包含了)的文件路径字符串或者是一个PEM格式的私钥
    passphrase:如果密钥已被加密,参数passphrase是必须的
openssl_pkey_get_public(mixed $certificate):resource
    从 certificate 中解析公钥,供其他函数使用
    certificate可以是一个 X.509证书资源、包含PEM编码的证书或者私钥(可能都包含了)的文件路径字符串或者是一个PEM格式的私钥。
openssl_pkey_new([array $configargs]):resource
    生成一个新的私钥和公钥对。
openssl_private_decrypt(string $data,string &$decrypted,mixed $key):bool
    使用私钥key解密先前通过openssl_public_encrypt()函数加密的data并将结果保存至decrypted变量中。
openssl_private_encrypt(string $data,string &$crypted,mixed $key):bool
    使用私钥key加密数据data并且将结果保存至变量crypted中。通过openssl_public_decrypt()解密
openssl_public_decrypt(string $data,string &$decrypted,mixed $key):bool
    使用公钥key解密先前由openssl_private_encrypt()加密的数据data并且将结果保存至变量 decrypted中
openssl_public_encrypt(string $data,string &$crypted,mixed $key):bool
    使用公钥key加密数据data并且将结果保存到变量crypted中。 通过openssl_private_decrypt()解密
openssl_random_pseudo_bytes(int $length[,bool &$crypto_strong]):string
    生成一个伪随机字节串string,字节数由length指定。crypto_strong表示在生成随机字节的过程中是否使用了强加密算法。
openssl_seal(string $data,string &$sealed_data,array &$env_keys,array $pub_key_ids[,string $method = "RC4"[,string &$iv]]):int
    使用随机生成的密钥和给定的method方法密封(加密) data 数据。 密钥用与pub_key_ids中的标识符相关联的每个公共密钥加密,并且每个加密密钥在env_keys中返回。 这意味着一个人可以将密封的数据发送给多个接收者(如果一个人已经获得了他们的公钥)。每个接收方都必须同时接收加密的数据和用接收方的公钥加密的信封密钥。
    sealed_data:被密封后的数据。
    env_keys:已被加密的密钥数组。
    pub_key_ids:公钥资源标识符组成的数组。
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。