php加密算法总结

一.单项散列加密(不可逆加密)

属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数

 1)MD5

      用法:md5(string,boolean)

      string(必填):待加密字符串

      boolean(可选):true代表生成原始16字符二进制格式,false代表生成32字符16进制格式,缺省为false

      @return:成功返回字符串加密结果,失败返回false

       不可逆算法,但可通过枚举,碰撞,收集等达到解密的效果;所以我们一般可通过双重MD5加密,或结合Sha1,Crypt等来增加解密难度

 2)Crypt

       用法:crypt(string.salt)

      string(必填):待加密字符串

      salt(选填):盐值,用于增加被编码的字符串,使编码更加安全;缺省后,会php回随机生成盐值(所以当盐值为空时,相同原文加密后的值是不一样的,因为盐值随机)

      @return:返回加密后的字符串或一个少于 13 字符的字符串,从而保证在失败时与盐值区分开来。

 3)Sha1

     用法:sha1(string,bollean);

     string(必填):待加密字符串

     boolean(可选):true代表生成原始20字符二进制格式,false代表生成40字符16进制格式,缺省为false

     @return:成功返回字符串加密结果,失败返回false

     我们可使用如md5(sha1($str))等加密算法来提高数据安全性

二.非对称加密

RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等,其中最常见的事RSA算法

1)RSA 

    非对称加密使用不同的密钥分别进行加密和解密,简单的说就是公钥加密私钥解密,反之私钥加密公钥解密。所以首先需要生成RSA密钥串。

    1.生成RSA密钥串 ( openssl或者利用支付宝开发文档的一个RSA密钥生成器,推荐使用前者)

      首先确保系统安装了openssl,没有则安装:yum install -y openssl  openssl devel

      生成1024位的RSA私钥:openssl  genrsa -out rsa_private_key.pem 1024     执行命令后会看到有rsa_private_key.pem文件存在

      通过rsa_private_key.pem私钥生成公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 执行命令后会看到有rsa_public_key.pem文件存在

     2.得到公、私钥  

        先通过file_get_contents()拿到密钥内容,再用openssl_pkey_get_private ,openssl_pkey_get_public 可以分别从文件内容中得到私钥、公钥。

     3.加密

       一般私钥加密:

       openssl_private_encrypt($str,$encrypted,$private_key);$encrypted为加密后密文
   少数公钥加密:     
       openssl_public_encrypt($str,$encrypted,$public_key);$encrypted为加密后密文
  4.解密
    上述私钥加密的需公钥解密    
       openssl_public_decrypt($data,$decrypted,$public_key);$decrypted为解密后原文
    反之公钥加密的需私钥解密    
       openssl_private_decrypt($data,$decrypted,$private_key);$decrypted为解密后原文


 

    

     

      

      





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值