AES(Advanced Encryption Standard,高级加密标准):是Rijndael加密法的一个子集,是现在全球使用最广的加密标准。
DES(Data Encryption Standard,数据加密标准):曾是十分流行的加密算法,但现在已被一般认为不再安全。
Triple DES:DES的更安全版本,通过将DES加密进行三次实现。
Blowfish:一种速度快的加密算法,因其算法公开且未被破解,所以很受欢迎。
非对称加密算法
RSA:一种非常流行的公钥算法,广泛应用在电子商务等领域。
DSA(Digital Signature Algorithm,数字签名算法):另一种广泛使用的公钥算法,通常用于数字签名。
ECC(Elliptic Curve Cryptography,椭圆曲线密码学):提供比RSA和DSA同等安全级别的更小的密钥。
散列函数
MD5:广泛用于密码存储等场景,但因易受彩虹表攻击,现在不再推荐使用。
SHA(Secure Hash Algorithm,安全散列算法):包括了很多算法标准,如SHA1、SHA256等,此类算法构建的哈希函数被广泛应用
AES加密/解密:
[复制到剪贴板] |
// AES 加密
function aes_encrypt($data, $key) {
$method = "AES-256-CBC";
$ivLength = openssl_cipher_iv_length($method);
$iv = openssl_random_pseudo_bytes($ivLength);
$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encrypted);
}
// AES 解密
function aes_decrypt($data, $key) {
$method = "AES-256-CBC";
$ivLength = openssl_cipher_iv_length($method);
$data = base64_decode($data);
$iv = substr($data, 0, $ivLength);
$encrypted = substr($data, $ivLength);
return openssl_decrypt($encrypted, $method, $key, OPENSSL_RAW_DATA, $iv);
}
DES加密/解密:
[复制到剪贴板] |
// DES 加密
function des_encrypt($data, $key) {
$data = openssl_encrypt($data, 'DES-EDE3', $key, 0);
return base64_encode($data);
}
// DES 解密
function des_decrypt($data, $key) {
$data = base64_decode($data);
return openssl_decrypt($data, 'DES-EDE3', $key, 0);
}
RSA 加密/解密:
[复制到剪贴板] |
$rsa = new \phpseclib\Crypt\RSA();
// RSA 生成新的密钥对
$keys = $rsa->createKey();
$privatekey = $keys['privatekey'];
$publickey = $keys['publickey'];
$plaintext = 'text to be encrypted';
// 加密
$rsa->loadKey($publickey);
$ciphertext = $rsa->encrypt($plaintext);
// 解密
$rsa->loadKey($privatekey);
$decrypted = $rsa->decrypt($ciphertext);
echo $decrypted;
DSA 签名/验证:
[复制到剪贴板] |
$dsa = new \phpseclib\Crypt\DSA();
// DSA 生成新的密钥对
$keys = $dsa->createKey();
$privatekey = $keys['privatekey'];
$publickey = $keys['publickey'];
$data = 'data to be signed';
// 签名
$dsa->loadKey($privatekey);
$signature = $dsa->sign($data);
// 验证签名
$dsa->loadKey($publickey);
$result = $dsa->verify($data, $signature);
echo $result ? 'verified' : 'unverified';
散列函数加密(MD5/SHA-256)
[复制到剪贴板] |
$text = "Hello, World!";
$hash = md5($text);
echo $hash;
$hash = hash('sha256', $text);
echo $hash;
专业加密算法库 php-encryption-2.4.0.zip