如何处理多个密码

hef*_*ump 1 java performance cryptography

我正在考虑创建几个密码并将它们放入集合中.主要用于在创建密钥和初始化Cipher对象时进行优化.它们会被大量使用.

Map<Integer, Cipher> encrytors = new HashMap<Integer, Cipher>();

Key key = new SecretKeySpec(secret, KEY_ALGORITHM);
Cipher encrypter = Cipher.getInstance(CIPHER_ALOGORITHM);
encrypter.init(Cipher.ENCRYPT_MODE, key);
encrytors.put(1, encrypter);            

Key key2 = new SecretKeySpec(secret2, KEY_ALGORITHM);
Cipher encrypter2 = Cipher.getInstance(CIPHER_ALOGORITHM);
encrypter2.init(Cipher.ENCRYPT_MODE, key2);
encrytors.put(2, encrypter);
Run Code Online (Sandbox Code Playgroud)

好坏?人们如何处理几种不同的密钥和密码?

nto*_*rnl 5

不要过早优化.

创建Cipher实例并初始化它一项相对昂贵的操作,请先测试它.只有在性能测试之后才能优化性能.

另请注意,如果您想在多个线程中使用此缓存,则Cipher不是线程安全的(也不是HashMap).

  • +1"非线程安全".我见过人们做到这一点的系统.它会在一个蓝色的月亮中引起一个问题,但是任何人都需要花费数年才能最终实现根本原因. (2认同)