【发布时间】:2016-11-09 12:26:25
【问题描述】:
我有一个场景,我必须匹配密码/敏感信息并检查验证。 现在我可以想出两种方法。
1) 我们可以通过从以加密形式存储在那里的数据库中获取正确的密码来比较加密形式的密码/敏感字段。
2) 或者我们可以先将密码解密为纯文本格式,然后进行比较。现在在这种情况下,需要额外调用解密实用程序,这是一种开销。
我查看了 String 类的“equals()”方法,它在摊销的常数时间内运行。因此,如果加密字符串是非常长的字符串,那么它将影响“equals()”方法的性能。 但在我的情况下,加密字符串并没有那么长。
但我主要关心的是通常遵循的标准是什么。 更新 1:
public static String encrypt(String text, String algo, byte[] bytes) throws NoSuchPaddingException, NoSuchAlgorithmException,
IllegalBlockSizeException, BadPaddingException, InvalidKeyException {
if (text == null || algo == null || bytes == null) {
//log properly
System.out.println("Please provide a valid text, algo or key bytes");
return null;
}
Key key = generateKey(bytes, algo);
Cipher c = Cipher.getInstance(algo);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] envValue = c.doFinal(text.getBytes());
String encVal2 = new BASE64Encoder().encode(envValue);
return encVal2;
}`
更新 2:
while (i < 300000) {
String value = KeyValidator.getSystemLicKey(KEY_);
if (!value.equals(value1))
System.out.println("--- : false");
value1 = value;
i++;
}
【问题讨论】:
-
典型的方法是比较两个加密密码。使用正确的算法,字符串“非常长”的可能性很小。
标签: java encryption