我正在为文件传输协议进行客户端加密(因此即使服务器也不知道该文件是什么.)我当前的方法是将文件导入浏览器文件系统,将文件分解为1 MB块,存储每个内存中的块,用AES加密每个块,然后连接所有块并上传.这可以防止内存过载,但效率相当低.有更好的方法吗?一种加密浏览器文件系统中整个文件的方法?谢谢!
我想加密在我的Web应用程序中在服务器和客户端之间来回传输的数据.我会使用SSL,但需要证书和专用IP地址.我没有问题获得证书,但专用IP要求我升级到我的Web主机上每月20美元的商业托管计划.我没有计划这样做,因为我坚持我的20美元/年共享主机方案.
所以,我想实现SSL的替代方案.但它确实比SSL更多.除了加密来回发送的数据外,它还加密数据库中的行.我在考虑做这样的事情:
JavaScript代码:
var transfer_key = 'whatever';
function encrypt(data, key) {...}
function decrypt(data, key) {...}
function send_data_to_server(url, data)
{
$.post(url, {'data' : encrypt(data, transfer_key) }, function(response) {
var decrypted_response = JSON.parse(decrypt(response));
});
}
Run Code Online (Sandbox Code Playgroud)
PHP代码:
$data = $_POST['data'];
$transfer_key = 'whatever';
$storage_key = 'whatever2';
function encrypt($data, $key) {...}
function decrypt($data, $key) {...}
databaseQuery('INSERT INTO table VALUES (?)', encrypt($data, $storage_key));
$decrypted_data = decrypt($data, $transfer_key);
$response = processData($decrypted_data);
echo encrypt($transfer_key, $response);
Run Code Online (Sandbox Code Playgroud)
如您所见,客户端发送到服务器的数据是加密的,反之亦然.并且数据库中的数据也被加密.当然,我永远不会实现这样的键.我可能会为每个用户随机生成第二个或第三个密钥.因此,transfer_key可以等于与随机密钥连接的constant_key,对于storage_key也是如此.
这会是SSL的一个很好的替代品吗?如何以一种难以击败的方式实现这种类型的加密?这种方法有什么特别的缺点吗?
我可能会找到一个负责加密的JS库,并在服务器端使用PHP的mcrypt扩展.我在想Blowfish,也许是AES256,但我不确定哪一个能给我加密强度与内存消耗的最佳比例.
建议吗?
我正在创建一个使用两个会话的登录系统(对于那些不允许使用cookie的人来说(同意cookie法律 ......我正在使用的网站http://www.cookielaw.org/the-cookie -law.aspx作为参考)
现在,我有这个系统用于我的cookie身份验证
function GenerateString(){
$length = mt_rand(0,25);
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(5, strlen($characters) -1)];
}
return $string;
}
$RandomString = GenerateString();
$CookieAuth = $DB->prepare("INSERT INTO cookieauth (Username,RandomString) VALUES (?,?)");
$CookieAuth->bind_param('ss',$_POST['Username'],$RandomString);
$CookieAuth->execute(); // Insert the Authentication Methods into the database
$CookieAuth->close(); // Allow another query/statement
$GetInsertID = $DB->prepare("SELECT ID FROM CookieAuth WHERE RandomString=?");
$GetInsertID->bind_param('s',$Randomstring);
$GetInsertID->execute();
$GetInsertID->bind_result($RowID);
$GetInsertID->fetch();
$GetInsertID->close();
setcookie("Auth[ID]",$RowID);
setcookie("Auth[UName],$_POST['Username']);
setcookie("Auth[RandomString]",$RandomString);
Run Code Online (Sandbox Code Playgroud)
然后处理cookie:
if(isset($_COOKIE['Auth'])){ …Run Code Online (Sandbox Code Playgroud)