相关疑难解决方法(0)

我应该如何使用客户端JavaScript加密大文件?

我正在为文件传输协议进行客户端加密(因此即使服务器也不知道该文件是什么.)我当前的方法是将文件导入浏览器文件系统,将文件分解为1 MB块,存储每个内存中的块,用AES加密每个块,然后连接所有块并上传.这可以防止内存过载,但效率相当低.有更好的方法吗?一种加密浏览器文件系统中整个文件的方法?谢谢!

javascript cryptography aes

7
推荐指数
1
解决办法
2252
查看次数

SSL的替代方案 - "手动"加密?

我想加密在我的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,但我不确定哪一个能给我加密强度与内存消耗的最佳比例.

建议吗?

php security encryption ssl

5
推荐指数
3
解决办法
5497
查看次数

如何在没有SSL的情况下保护身份验证cookie

我正在创建一个使用两个会话的登录系统(对于那些不允许使用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)

php authentication cookies

2
推荐指数
1
解决办法
3959
查看次数