<?php
/**
* RSA加密解密
* @author jetking <www.xibotu.com>
*/
class Rsa {
private static $PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----
xDSN79RE9lZBKHD7r6uX2ovyqFVcqhOawsZMVq9UjZEahRuZZSfGlzwqO84PdfRE
YzCMX71R5bevJP37R5fBX4fZ22hMloFNNdokiYZ4l4ZJ4ooBWeGdGqRsHW3z3fE3
... ...
VnlUPzRTggamditCVYaoNNqMuBtV7PsRZtZWV2UV7WSSioExcuKixBPYCmJpMXKV
138YMtyf9DCZYgX7wuNmCqQMfJGvnfRKfLp5ks0iZhqdi4gP0hdINAyCZXzMwswc
Xa5ULb6LHyYk
-----END PRIVATE KEY-----';
private static $PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----
pqYokHJS6TELqPPFPWzrV3F0WuLfWymrv9DWldmy9V0j3ITnGUidRACzIiCggvBX
... ...
pDoaIVXCPIUFZ7dFi0cjho5FZoUGf6jgQG0BeFTHbY3HAcfDGiOAWD4e4DCYt3Eb
wdpFDxpbN5opKjOGNL45CLGU
-----END PUBLIC KEY-----';
/**
*返回对应的私钥
*/
private static function getPrivateKey(){
$privKey = self::$PRIVATE_KEY;
return openssl_pkey_get_private($privKey);
}
/**
*返回对应的私钥
*/
private static function getPublicKey(){
$publicKey = self::$PUBLIC_KEY;
return openssl_pkey_get_public($publicKey);
}
/**
* 私钥加密
*/
public static function privEncrypt($data)
{
if(!is_string($data)){
return null;
}
return openssl_private_encrypt($data,$encrypted,self::getPrivateKey())? base64_encode($encrypted) : null;
}
/**
* 私钥解密
*/
public static function privDecrypt($encrypted)
{
if(!is_string($encrypted)){
return null;
}
return (openssl_private_decrypt(base64_decode($encrypted), $decrypted, self::getPrivateKey()))? $decrypted : null;
}
/**
* 公钥解密
*/
public static function publicDecrypt($encrypted)
{
if(!is_string($encrypted)){
return null;
}
return (openssl_public_decrypt(base64_decode($encrypted), $decrypted, self::getPublicKey()))? $decrypted : null;
}
/**
* 私钥解密,不做Base64解码
* @param unknown $encrypted
* @return NULL|Ambigous <unknown, NULL>
*/
public static function privDecryptNB64($encrypted)
{
if(!is_string($encrypted)){
return null;
}
return (openssl_private_decrypt($encrypted, $decrypted, self::getPrivateKey()))? $decrypted : null;
}
/**
* 分段私钥解密
* @param string $encrypted
* @return Ambigous <string, NULL, Ambigous>
*/
public static function partPrivDecrypt($encrypted){
$encrypted = base64_decode($encrypted);
$fiveMBs = 50 * 1024 * 1024;
// $file = FCPATH. 'jktest_'.time().'.txt';
$fp = fopen("php://memory",'w+b');
fwrite($fp, $encrypted);
fseek($fp, 0);
$bContent = '';
while (!feof($fp)) {
$bContent .= self::privDecryptNB64(fread($fp, 128));
}
fclose($fp);
// unlink($file);
return $bContent;
}
}
PHP-RSA加密解密,支持分段解密
1星 需积分: 50 108 浏览量
2016-05-09
15:47:48
上传
评论 1
收藏 1KB ZIP 举报
cnJetKing
- 粉丝: 1
- 资源: 7
最新资源
- 基于Android的EasyPad记事本应用设计源码
- 基于Apache Spark的Scala大数据处理设计源码
- 基于Java的在线宠物用品交易网站设计与实现源码
- 毕业设计-仿生六足机器人的制作全教程源码+电子元器件+程序代码+线路组件图+安装教程+搭建视频教程
- 基于ROS和webots的xrobot机械臂仿真初探C++源码
- 基于ROS的点焊机器人仿真与控制python源码+文档说明+使用说明+详细注释
- 基于vue实现的细粒度交通时空大数据分析系统+源代码+文档说明
- 安卓大作业-基于Electron的交通时空大数据分析挖掘系统客户端(Android)+源代码+文档说明+界面截图
- 基于Java的朱氏集团客户关系管理系统设计源码
- 基于C++的作业提交与批改系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈