zoukankan      html  css  js  c++  java
  • REA非对称加密和AES对称加密

    RSA 非对称加密

    非对称加密很安全,但是非常慢,所以我们一般用对称加密来加密传递消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去

    非对称加密有公私钥组成,其中私钥要有一方保管不能外泄,而公钥可以任何请求它的人,双方交互,相互交换公钥,用自己的私钥进行签名,那么只要有我方的公钥就可以验签成功,用对方的公钥进行加密,那么只有持有对应的私钥才可以解密,能最大限度的保证安全

    AES对称加密 

    最快速 最简单的一种加密方式,加密和解密用的是同样的秘钥,这种方法在密码学中叫做对称加密算法

    对称加密通常使用相对较小的秘钥,一般小于256bit,因为秘钥越大,加密于越强,但加密与解密的过程越慢

    对称加密的一大缺点是秘钥的管理和与分配,换句话说,如何把秘钥发送到要解密你消息的人的手里是一个问题;现实中通常的做法是将对称加密的秘钥进行非对称加密,然后传送给需要它的人

    openssl  (openssl secure sockets layer) 开放式安全套接层协议

    PHP中支持openssl扩展,可以用来对数据进行加密

    非对称加密函数:

    openssl_encrypt(string $data, string $method, string $key[, int options = 0[,string $iv]])     加密数据

    openssl_decrypt()  解密数据  // 参数同上

    参数解释:

    data 待加密的数据

    method 加密算法, AES-128-CBC AES-256-CBC.....

    key 加密的秘钥,秘钥长度是method使用的位数 / 8

    options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING

    iv 非null初始化向量,长度小于等于method使用的位数 / 8 

    返回值: 成功返回二进制的字符串,可以使用base64_encode进行转化

    注意: 

    加解密使用的iv必须一致

    对称加密:

    openssl_private_encrypt(string $data, string &$decrypted, mixed $key [, int $padding = OPENSSL_OKCS1_PADDING])    使用私钥加密

    openssl_private_decrypt()    使用私钥解密

    openssl_public_encrypt()     使用公钥加密

    openssl_public_decrypt()     使用公钥解密

    参数说明:

    data  需要加密/解密的数据

    decrypted 这将保存加密/解密的结果

    key 公钥/私钥,必须是和用来加密/解密所用的公私钥对应的公私钥

    padding 可以是一些常量值

  • 相关阅读:
    LA 6891 Money Transfers(最短路)
    Gym
    UVa 1662 Brackets Removal
    Gym 101334F Feel Good
    Gym 101334E Exploring Pyramids(dp+乘法原理)
    POJ 2112 Optimal Milking(二分+最大流)
    POJ 2115 C Looooops(模线性方程)
    UVa 11552 最小的块数(序列划分模型:状态设计)
    UVa 10534 波浪子序列(快速求LIS)
    UVa 10891 Sum游戏
  • 原文地址:https://www.cnblogs.com/skl-bobo/p/13565121.html
Copyright © 2011-2022 走看看