相关疑难解决方法(0)

servlet中的threadlocal变量

threadlocals变量是否对拥有变量的servlet的所有请求都是全局的?

我在服务器上使用树脂.

感谢awnser.

我想我可以让自己更清楚.

具体案例:

我想要:

  • 请求开始执行时初始化静态变量.
  • 能够以线程安全的方式在从servlet调用的方法的进一步执行中查询变量的值,直到请求结束执行

java concurrency multithreading servlets thread-local

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

使用RSA Cipher实现线程安全

正如标题所说,我想知道在给定RSA算法的情况下如何在多线程环境中最好地使用Cipher实例.

我已经阅读了关于这个主题的几个问题,以及我收集的内容:

  • 密码不是线程安全的,因为它在加密/解密时保持内部状态

  • 如果使用AES,doFinal()则将初始化向量重置为上一个已知值,因此每次都应生成新的Cipher实例

我的问题

  • cipher.init()如果选择的算法是RSA,是否可以只调用一次?这与第二个子弹相反,如下面的代码所示.我相信因为没有初始化向量.此外,密码仅用于解密数据.

  • 我应该只在cipher.doFinal()调用时同步吗?

  • 处理多个线程请求加密服务的常用方法是什么,我应该将密码池作为一些代理后面的阻塞队列吗?

代码示例:

public class RsaPrototype {

private static PrivateKey privKey;
private static Cipher cipher;
private static final String PRIVATE_KEY_PATH ="./privK.pem";

/*
 * ALGORITHM/BLOCKING_MODE/PADDING_SCHEMA
 */
private static final String CIPHER_SPECIFICATION = "RSA/None/NoPadding";
private static final String RSA_PROVIDER ="BC";

static {

    Security.addProvider(new BouncyCastleProvider());
    importPrivateKey();
    cipher = getCipher();

}

/**
 * Initializes cipher with RSA algorithm, without blocking mode and padding.
 * Implementation provider is bouncy castle.
 * 
 * @return cipher …
Run Code Online (Sandbox Code Playgroud)

java encryption multithreading rsa

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