加密算法

一、加密算法

单项散列加密

将任意长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出信息进行计算从而得到输入信息。

  1. 特征:雪崩效应、定长输出和不可逆。
  2. 作用:确保数据的完整性。
  3. 加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32。
对称散列加密

对称加密是指加密和解密是使用同一个密钥,或者可以互相推算。

  1. 加密方和解密方使用同一个密钥。
  2. 加密解密的速度比较快,适合数据比较长时的使用。
  3. 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。
  4. 加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密钥的加密)、Blowfish。
非对称散列加密

非对称加密和解密使用的不是同一个密钥,其中一个对外公开,称作公钥,另一个只有所属者知道,称作私钥。

  1. 每个用户拥用一对密钥加密:公钥和私钥。
  2. 公钥加密,私钥解密;私钥加密,公钥解密。
  3. 公钥传输的过程不安全,易被窃取和替换。
  4. 由于公钥使用的密钥长度非常长,所以公钥加密速度非常慢,一般不使用其去加密
  5. 某一个用户用其私钥加密,其他用户用其公钥解密,实现数字签名的作用。
  6. 公钥加密的另一个作用是实现密钥交换。
  7. 加密和签名算法:RSA、ELGamal。
  8. 公钥签名算法:DSA。

二、PHP常用算法

MD5加密

string md5 ( string $str [, bool $raw_output = false ] )

  1. md5()默认情况下以 32 字符十六进制数字形式返回散列值,它接受两个参数,第一个为要加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,md5()则会返回原始的 16 位二进制格式报文摘要。
  2. md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解。
Sha1加密

string sha1 ( string $str [, bool $raw_output = false ])

  1. 跟md5很像,不同的是sha1()默认情况下返回40个字符的散列值,传入参数性质一样,第一个为加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,sha1()则会返回原始的20 位原始格式报文摘要。
  2. sha1()也是单行加密,没有逆向解密算法。
Urlencode加密

string urlencode ( string $str )

  1. 一个参数,传入要加密的字符串(通常应用于对URL的加密)
  2. urlencode为双向加密,可以用urldecode来加密(严格意义上来说,不算真正的加密)。
  3. 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
  4. 常见的urlencode()的转换字符:
    ? => %3F
    = => %3D
    % => %25
    & => %26
    \ => %5C
    空格 => %5C
base64编码加密

string base64_decode ( string $encoded_data )

  1. base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)。
  2. base64_encode()为双向加密,可用base64_decode()来解密。
Crypt加密

string crypt ( string $str [, string $salt ] )

  1. crypt()接受两个参数,第一个为需要加密的字符串,第二个为盐值(就是加密干扰值,如果没有提供,则默认由PHP自动生成)。
  2. crypt()为单向加密,跟md5一样。
password_hash

string password_hash ( string $password , int $algo [, array $options ] )

  1. password_hash() 使用足够强度的单向散列算法创建密码的散列(hash)。 password_hash() 兼容 crypt()。 所以, crypt() 创建的密码散列也可用于 password_hash()。
  2. password_hash()创建的hash可以用password_verift()验证。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值