最新新闻:

PHP的openssl扩展openssl加密扩展包,PHP函数有哪些?

时间:2022-04-30 17:01:38来源:网络整理

/*

加密算法一般分为两种:对称加密算法和非对称加密算法。

对称加密

对称加密算法是消息的发送者和接收者使用相同的密钥,发送者使用该密钥对文件进行加密,

接收者使用相同的密钥解密以获得信息。常见的对称加密算法有:des/aes/3des。

对称加密算法的特点是:速度快,加密前后文件大小变化不大,但密钥存储是个大问题

,由于消息发送方或接收方的密钥丢失,信息传输将变得不安全。

非对称加密

对称加密的反面是非对称加密。非对称加密的核心思想是使用一对相对密钥

分为公钥和私钥。私钥本身是安全的,而公钥是公开的。公钥和私钥是一对。如果公钥用于加密数据,

只用对应的私钥解密;如果数据是用私钥加密的,那么只有对应的公钥才能用来解密数据,只需要用接收方的公钥加密后发送数据。

常见的非对称加密算法有RSA/DSA:非对称加密虽然没有密钥存储的问题,但计算量大,加密速度很慢。有时我们还需要对大块的数据进行分块加密。

数字签名

为了保证数据的完整性,还需要通过哈希函数计算出一个哈希值,称为数字签名。它的特点是:

无论原始数据有多大,结果的长度都是一样的;

输入相同,输出相同;

对输入的小改动可以产生很大的不同;

加密过程不可逆,无法通过哈希值获取原始数据;

常见的数字签名算法有md5、hash1等算法。

PHP 的 openssl 扩展

openssl扩展使用openssl加密扩展包,封装了多个加解密相关的PHP函数,极大的方便了数据的加解密。常用的函数有:

对称加密相关:

string openssl_encrypt (string $data, string $method, string $password)

其中$data是要加密的数据,$method是要用于加密的方法,$password是要使用的密钥,函数返回加密后的数据;

$methods列表可以使用openssl_get_cipher_methods()获取

解密函数为string openssl_encrypt(string $data, string $method, string $password)

非对称加密相关:

他们都只需要传入一个证书文件(通常是.pem文件);

使用公钥加密数据,其中$data是要加密的数据; $crypted 是一个引用变量aes算法原理,加密后的数据会放到这个变量中; $key 是要传入的公钥数据;

p>

因为加密数据分组的时候,可能不是加密位数的整数倍,所以需要$padding(填充),

$padding 的选项有 OPENSSL_PKCS1_PADDING、OPENSSL_NO_PADDING,分别是 PKCS1 的 padding,或者没有 padding;

签名函数:$data是要签名的数据; $signature 是签名结果的引用变量; $priv_key_id 是用于签名的私钥; $signature_alg 是用于签名的算法

aes算法原理,其算法列表可以通过openssl_get_md_methods()获取

签名验证函数:相对于签名函数,只是需要传入私钥对应的公钥;结果为签名验证结果,1表示成功,0表示失败,-1表示错误;

* */

/*

* 基于百度云 API 的示例

* 所有密码均采用AES 128位加密算法加密,SK的前16位作为密钥。

* 加密后生成的二进制字节流需要转换成十六进制,以字符串的形式发送给服务器

* */

函数 aes128WithFirst16Char($adminPass, $secretAccessKey)

{

$adminPass = pkcs5Pad($adminPass);

//将键值截断为16位

$secretAccessKey = substr($secretAccessKey, 0, 16);

//用AES加密

$crypted = openssl_encrypt($adminPass, 'AES-128-ECB', $secretAccessKey, OPENSSL_RAW_DATA);

//将字符串转换为十六进制

return bin2hex(substr($crypted, 0, 16));

}

//把密码填到16位

函数 pkcs5Pad($adminPass)

{

$pad = 16 - (strlen($adminPass) % 16);

返回 $adminPass 。 str_repeat(chr($pad), $pad);

}

echo aes128WithFirst16Char('加密密码','密钥值');

声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。

图文推荐

热点排行

精彩文章

热门推荐