php:对称加密 与 非对称加密

对称加密(AES)

$res = openssl_encrypt(123, "AES-128-ECB", 888);
var_dump($res);
$res = openssl_decrypt($res,"AES-128-ECB",888);
var_dump($res);

非对称加密(RSA)

公钥,密钥自己生成 http://web.chacuo.net/netrsakeypair

class Rsa {   
    private static $PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMJNxNEiEbZhll/n
+nkFxwlCqbASfyN9mi0IE2On3Fm+oc28abDZ+f/xQX3RRsJqjlpoO5u7x05aevvC
dUR1RP0zoR+rMm8qpUb+JgTGAv3JkNHIKRHxU1LAo8Y9Q0/83ewZP8i6qVTqMVJN
jSN4zZ5vE28WEMYKiY+KqQHOH+VhAgMBAAECgYEAmrS7Edzzh2iaB5C4EKY1/LyU
STng+wwlttcoQP/FZbtwL1RmPsa/1DZuc9QuZ9vZrkgxteTEYzGNnGkPX8uTejfl
aRmVoJ2UGKRagyNalGPrHpSElt9C0ZV3NEmtZjyBc+hx+mlFi3PPk0mQTuAlMUsw
szbk2KVGUHXNlvyXiVUCQQDjy88gvXUb6LscBPv4WaYhzA34zodz9xQ1hxe6j9VE
PiP+OEw/qug3+2rjEj9ZRoRANeJ2i25vy3zovDY+o8mnAkEA2lxkO8piZbnpKzA9
lnIi7ZkeYGOQ7BSZDEN2/q1gcfMoODNs0vzzAYaWas0I9wnGvq4RKmZN4BHBd5I8
gCkptwJBAIdDJxu2xAoteKVbpE7E1OwuoYFDCZVnen2KWSGzdJyQFYlH3qbTkg5j
4QUyeaFGSRNjq7ReeNYzS1lbIQ6y7PMCQQCJmYMIMmaDF/4Y2xNURKRB+SUtNFDU
k75F/hV0Myj9ZW7Iy48d/YvcQEV1E7M8iQqWifYDM+iK9GVnxd0eHdJNAkBmnijz
J+6ZClOn8P6krCYOCmZqKYHtlAc9XZ1EhrVHmkzV26HKDdAfFqwAGX+3FJnkOR6r
A7XY+/TvcqMBY5FV
-----END PRIVATE KEY-----';
    private static $PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCTcTRIhG2YZZf5/p5BccJQqmw
En8jfZotCBNjp9xZvqHNvGmw2fn/8UF90UbCao5aaDubu8dOWnr7wnVEdUT9M6Ef
qzJvKqVG/iYExgL9yZDRyCkR8VNSwKPGPUNP/N3sGT/IuqlU6jFSTY0jeM2ebxNv
FhDGComPiqkBzh/lYQIDAQAB
-----END PUBLIC KEY-----';
 
    /**    
     * 获取私钥    
     * @return bool|resource    
     */   
    private static function getPrivateKey()
    {       
        $privKey = self::$PRIVATE_KEY;       
        return openssl_pkey_get_private($privKey);   
    }   
 
    /**    
     * 获取公钥    
     * @return bool|resource    
     */   
    private static function getPublicKey()
    {       
        $publicKey = self::$PUBLIC_KEY;       
        return openssl_pkey_get_public($publicKey);   
    }   
 
    /**    
     * 私钥加密    
     * @param string $data    
     * @return null|string    
     */   
    public static function privEncrypt($data = '')   
    {       
        if (!is_string($data)) {           
            return null;      
        }       
        return openssl_private_encrypt($data,$encrypted,self::getPrivateKey()) ? base64_encode($encrypted) : null;   
    }   
 
    /**    
     * 公钥加密    
     * @param string $data    
     * @return null|string    
     */   
    public static function publicEncrypt($data = '')  
    {       
        if (!is_string($data)) {           
            return null;       
        }       
        return openssl_public_encrypt($data,$encrypted,self::getPublicKey()) ? base64_encode($encrypted) : null;   
    }   
 
    /**    
     * 私钥解密    
     * @param string $encrypted    
     * @return null    
     */   
    public static function privDecrypt($encrypted = '')   
    {       
        if (!is_string($encrypted)) {           
            return null;       
        }       
        return (openssl_private_decrypt(base64_decode($encrypted), $decrypted, self::getPrivateKey())) ? $decrypted : null;   
    }   
 
    /**    
     * 公钥解密    
     * @param string $encrypted    
     * @return null    
     */   
    public static function publicDecrypt($encrypted = '')   
    {       
        if (!is_string($encrypted)) {           
            return null;       
        }       
    return (openssl_public_decrypt(base64_decode($encrypted), $decrypted, self::getPublicKey())) ? $decrypted : null;   
    }
}


$rsa = new Rsa();
$data['name'] = 'abc';
$data['age']  = '123';
$privEncrypt = $rsa->privEncrypt(json_encode($data));
echo '私钥加密后:'.$privEncrypt.'<br>';
 
$publicDecrypt = $rsa->publicDecrypt($privEncrypt);
echo '公钥解密后:'.$publicDecrypt.'<br>';
 
$publicEncrypt = $rsa->publicEncrypt(json_encode($data));
echo '公钥加密后:'.$publicEncrypt.'<br>';
 
$privDecrypt = $rsa->privDecrypt($publicEncrypt);
echo '私钥解密后:'.$privDecrypt.'<br>';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值