小编dav*_*mer的帖子

每封邮件都需要Cipher.init()吗?

假设两个客户端来回交换安全消息.

必须每次为每条消息运行此块,或者可以在开始时只执行一次任何步骤:

cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
output = cipher.doFinal(content);
Run Code Online (Sandbox Code Playgroud)

我想提供一些上下文 - 虽然我还没有完全理解内部,但我的理解是,出于安全考虑,更改每条消息的IV非常重要.所以我认为这个问题的答案将取决于该步骤是否在doFinal()阶段或init()....

java encryption cryptography aes

9
推荐指数
1
解决办法
1万
查看次数

网络工作者是否有自己的垃圾收集器?

我有一些处理不一定是cpu密集型的,但是会创建许多临时对象,这会导致垃圾收集器在动画等过程中出现干扰.

将临时对象创建过程卸载到Web工作者是否有助于缓解这种情况?换句话说 - GC打嗝是否会被隔离到Web工作线程并且不会影响我的主线程,或者GC是否会影响两个线程?

javascript browser garbage-collection web-worker

6
推荐指数
1
解决办法
471
查看次数

传输 TypedArrays 的正确方法?

给定像 Uint8Array 这样的类型化数组,似乎有两种方法可以通过工作线程传输它们。

选项1

直接发送缓冲区并将其投射到接收端:

发件人:postMessage({fooBuffer: foo.buffer}, [foo.buffer])

接收者:const bar = new Uint8Array(msg.data.fooBuffer)

选项2

发送 TypedArray 并仅传输其缓冲区:

发件人:postMessage({foo: foo}, [foo.buffer])

接收器:foo按原样使用。


在我看来,选项 2 更可取,因为接收者不需要了解数据的类型,并且代码较少 - 但我不断遇到仅采用选项 1 风格的示例。

更重要的是,在我当前的代码中,只有选项 2 有效。我已经确认数据已传输,因为仅在发送后才foo[0]变得未定义。

使用选项 2 可以吗,即使它不是我看到的示例代码的标准?

javascript web-worker

6
推荐指数
1
解决办法
2712
查看次数

多人白板竞赛条件

想象一下多人白板,几个人可以同时画画.为了简单起见,我们可以说白板上有一个可以被任何用户移动或删除的对象.没有用户拥有的对象的概念(即允许任何用户操纵任何对象是很重要的...这是一个免费的所有白板)

我的问题是这个......如果两个用户试图同时对该对象做一个不同的动作,即一个删除它,另一个移动它,会发生什么?

现在 - 只是让消息通过,它就完全没了.

一个想法是拥有一个服务器端控件,它可以解析谁拥有对象的控制权,并且在解决冲突之前不允许任何事情发生在客户端.解决冲突可以基于先到先得的原则.

即使这种情况发生得非常快,但是小延迟(~50-300ms)是不可接受的,因为在客户端必须立即进行移动.例如,不要操纵对象,而是想到笔.因为有一个延迟,直到他们已经开始画...不好!

另一个想法是有一个"请求控制"按钮,它要求服务器端扩展控制....与以前相同的想法,但现在他们不会因笔画的初始延迟而感到沮丧.这也不是那么好,因为他们必须按下那个按钮,直到他们可以做任何事情,而这个白板真的是给孩子们的......

还有其他方法吗?:)

c# flash multiplayer actionscript-3

5
推荐指数
1
解决办法
563
查看次数

动态创建大型zip用于客户端下载

有一个项目,每个用户可以下载一个包含大约2GB数据的zip ...

唯一的问题是,有一些非常小的文件必须在每个用户的zip中更改.

有没有一种优雅的方法来解决这个问题,除了不要求所有这些都在拉链?我考虑过的想法:

1)将挂单推送到队列,并在资源可用时处理该队列...处理将意味着为每个订单创建一个新的zip,然后在N天后删除它

2)以某种方式在PHP中操作zip,然后通过原始类型的推送(即吐出标题,然后根据文件+自定义文件生成数据)

我可能会遇到的最佳方法或内存问题的想法?谢谢!

php architecture linux apache amazon-web-services

5
推荐指数
1
解决办法
1793
查看次数

读取$ _SESSION所需的session_start()

假设我们有index.php来调用session_start()和填充$_SESSION数据.
当用户在网页上时,他们点击一个按钮,AJAX查询将启动到ajax.php.ajax.php没有调用session_start(),但是它成功读取了数据$_SESSION.

这是预期的行为吗?

php ajax session session-variables

5
推荐指数
1
解决办法
190
查看次数

行为是一个Comonad?

Conal Elliott在这里谈论Streams和Comonads:http://conal.net/blog/posts/sequences-streams-and-segments

但是,他没有直接提到行为.所以......是行为的共同体,如果是这样的话 - 这实际意味着什么呢?

对于初学者 - 我认为行为可以提供extendextract功能.我看到它工作的唯一方法是它是否在特定时刻对值进行采样.

这是Comonad对行为意味着什么?它允许一个人"分叉并冻结"一个行为?

换句话说 - 如果我们有一个行为随着时间的推移具有这些值:A,B,C,D,...我们可以extend在它的时间B,并获得一个B无限期包含的新行为(这是有用的 - 因为我们可以当时liftmap它等)

haskell frp category-theory purescript

5
推荐指数
1
解决办法
243
查看次数

如何使用salsa20(或ChaCha)?

假设我们有一个大文件,可以以 1024 字节左右的块读取,我如何使用 Salsa 或 Chacha 20 加密和解密每个块?

另外,我在哪里指定轮数(即 8、12 或 20)?

到目前为止,我还没有能够通过查看 eSTREAM 测试包来弄清楚:(

我通过eSTREAMSalsa20 主页下载了以下文件:

  • 恰恰网
  • 加密配置.h
  • 加密机.h
  • 加密便携式.h
  • 加密同步.h

我看到 encrypt-sync.h 中的注释讨论了按以下顺序调用函数:

  • ECRYPT_keysetup();
  • ECRYPT_ivsetup();
  • ECRYPT_encrypt_bytes();

但我完全不知道我应该提供什么作为参数来完成这项工作......

这是迄今为止我最好的尝试,从一小串明文开始(我的 C 生锈了……我可能犯了一些基本错误,尽管我看不到):

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ecrypt-sync.h"

#define CHUNKSIZE 1024

void getRandomBytes(u8 **str, u32 len);
void showData(u8 *data, u8 *header);

int main(int argc, char** argv)
{
    char plaintext[CHUNKSIZE] = "THIS IS A TEST";
    ECRYPT_ctx ctx;
    u8 *key, *IV, *ciphertext, *result;

    /*
    Don't …
Run Code Online (Sandbox Code Playgroud)

c c++ cryptography

4
推荐指数
1
解决办法
8267
查看次数

*和Object之间有什么区别

假设我有一个有几个属性的类:

public class MyClass {
   public var fooProp:*;
   public var barProp:Object;
}
Run Code Online (Sandbox Code Playgroud)

实际上,这些之间有什么区别?我可以在以后分配给fooProp的变量类型是否无法分配给barProp?

actionscript-3

4
推荐指数
1
解决办法
111
查看次数

(=&lt;&lt;) 组合子的鸟名?

Haskell aviary 组合器列出(=<<)为:

(a -> r -> b) -> (r -> a) -> r -> b
Run Code Online (Sandbox Code Playgroud)

有官方鸟名吗?或者它可以通过预先存在的派生出来吗?

haskell functional-programming combinators

4
推荐指数
1
解决办法
483
查看次数