代码拉取完成,页面将自动刷新
同步操作将从 ks3sdk/ks3-php-sdk 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
//使用客户端加密的方式上传下载文件
//检测API路径
if(!defined('KS3_API_PATH'))
define('KS3_API_PATH', dirname(__FILE__));
require_once KS3_API_PATH.DIRECTORY_SEPARATOR."Ks3Client.class.php";
require_once KS3_API_PATH.DIRECTORY_SEPARATOR."encryption".DIRECTORY_SEPARATOR."EncryptionUtil.php";
require_once KS3_API_PATH.DIRECTORY_SEPARATOR."encryption".DIRECTORY_SEPARATOR."EncryptionHandlers.php";
//加密模式
//暂时仅支持EO,使用AES/CBC/PKCS5Padding算法对数据进行加密
if(!defined("ENCRYPTPTION_MODE"))
define("ENCRYPTPTION_MODE","EO");
//加密信息存储模式,暂时支持 ObjectMetadata和InstructionFile
//ObjectMetadata:存在用户元数据中
//InstructionFile:存在一个.instruction文件中
if(!defined("ENCRYPTPTION_STORAGE_MODE"))
define("ENCRYPTPTION_STORAGE_MODE","ObjectMetadata");
if(function_exists('get_loaded_extensions')){
//检测mcrypt,openssl扩展
$extensions = get_loaded_extensions();
if($extensions){
if(!in_array('mcrypt', $extensions)){
throw new Ks3ClientException("please install mcrypt extension");
}
if(!in_array('openssl', $extensions)){
throw new Ks3ClientException("please install openssl extension");
}
}else{
throw new Ks3ClientException("please install extensions");
}
}else{
throw new Ks3ClientException();
}
class Ks3EncryptionClient extends Ks3Client{
private $encryptionHandler = NULL;
//用户提供的主密钥,可以是对称秘钥或非对称秘钥(array,分别是公钥和私钥)
private $encryptionMaterials = NULL;
public function __construct($accessKey, $secretKey,$encryptionMaterials, $endpoint = NULL ){
parent::__construct($accessKey,$secretKey,$endpoint);
if(is_array($encryptionMaterials)){
if(count($encryptionMaterials)==2){
$pk = openssl_pkey_get_public($encryptionMaterials[0]);
$sk = openssl_pkey_get_private($encryptionMaterials[1]);
if(!$pk)
throw new Ks3ClientException("invalid RSA public key,you can generate key use openssl");
if(!$sk)
throw new Ks3ClientException("invalid RSA private key,you can generate key use openssl");
$encryptionMaterials = array($pk,$sk);
}else{
throw new Ks3ClientException("encryptionMaterials should be string or an array of size 2");
}
}
$ks3client = new Ks3Client($accessKey,$secretKey,$endpoint);
$this->encryptionMaterials = $encryptionMaterials;
if(ENCRYPTPTION_MODE == "EO"){
$this->encryptionHandler = new EncryptionEO($ks3client,$encryptionMaterials);
}elseif (ENCRYPTPTION_MODE == "AE") {
throw new Ks3ClientException("Authenticated encryption will be supported in the futher");
}
else{
throw new Ks3ClientException("unsupported encryption mode :".ENCRYPTPTION_MODE);
}
if(ENCRYPTPTION_STORAGE_MODE != "ObjectMetadata"&&ENCRYPTPTION_STORAGE_MODE!="InstructionFile"){
throw new Ks3ClientException("unsupported encryption storage mode :".ENCRYPTPTION_STORAGE_MODE);
}
}
public function putObjectByContent($args=array()){
return $this->encryptionHandler->putObjectByContentSecurely($args);
}
public function putObjectByFile($args=array()){
return $this->encryptionHandler->putObjectByFileSecurely($args);
}
public function getObject($args=array()){
return $this->encryptionHandler->getObjectSecurely($args);
}
public function initMultipartUpload($args=array()){
return $this->encryptionHandler->initMultipartUploadSecurely($args);
}
public function uploadPart($args=array()){
return $this->encryptionHandler->uploadPartSecurely($args);
}
public function abortMultipartUpload($args=array()){
return $this->encryptionHandler->abortMultipartUploadSecurely($args);
}
public function completeMultipartUpload($args=array()){
return $this->encryptionHandler->completeMultipartUploadSecurely($args);
}
public function deleteObject($args=array()){
$result = parent::deleteObject($args);
$args["Key"] = $args["Key"].EncryptionUtil::$INSTRUCTION_SUFFIX;
try {
parent::deleteObject($args);
} catch (Exception $e) {
//do nothing
}
return $result;
}
public function copyObject($args=array()){
if(parent::objectExists(array(
"Bucket"=>$args["Bucket"],
"Key"=>$args["Key"]
))){
throw new Ks3ClientException("copy object faild,destination object exists");
}
if(parent::objectExists(array(
"Bucket"=>$args["CopySource"]["Bucket"],
"Key"=>$args["CopySource"]["Key"].EncryptionUtil::$INSTRUCTION_SUFFIX
))){
parent::copyObject(
array(
"Bucket"=>$args["Bucket"],
"Key"=>$args["Key"].EncryptionUtil::$INSTRUCTION_SUFFIX,
"CopySource"=>array(
"Bucket"=>$args["CopySource"]["Bucket"],
"Key"=>$args["CopySource"]["Key"].EncryptionUtil::$INSTRUCTION_SUFFIX
)
)
);
}
return parent::copyObject($args);
}
public function renameObject($args=array()){
print_r(parent::copyObject(array(
"Bucket"=>$args["Bucket"],
"Key"=>$args["newKey"],
"CopySource"=>array(
"Bucket"=>$args["Bucket"],
"Key"=>$args["Key"]
)
)
));
print_r("after copy succeed");
$ks3client->deleteObject(array(
"Bucket"=>$args["Bucket"],
"Key"=>$args["Key"]
));
// return parent::renameObject($args);
}
}
?>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。