隐藏算法是否必要?

时间:2017-03-09 03:46:34

标签: java android security

我只想澄清一下数据安全性,我正在使用SecreteKeyFactory对象来生成一个秘密密钥。这将用于加密/解密数据。

这是我的代码

 private SecretKey getKey(String user_id, String salt) throws NoSuchAlgorithmException,
        InvalidKeySpecException, UnsupportedEncodingException {
    SecretKey secretKey = null;

    String PBE_SHA256_256BitAES_CBC_BC                  = "PBEWithSHA256And256BitAES-CBC-BC";
    String AES_ENCRYPTION                               = "AES";

    SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(PBE_SHA256_256BitAES_CBC_BC);
    KeySpec keySpec = new PBEKeySpec(user_id.toCharArray(), salt.getBytes(), Constants.ITERATION_COUNT, Constants.KEY_LENGTH);

    secretKey = secretKeyFactory.generateSecret(keySpec);
    secretKey = new SecretKeySpec(secretKey.getEncoded(), AES_ENCRYPTION );

    return  secretKey;
}

我的问题是。是否有必要隐藏用于获取密钥的算法?如果没有,我们应该在哪里存储算法,以便我们可以提高安全性?

1 个答案:

答案 0 :(得分:11)

不,隐藏算法是没有必要的。这样做将是security through obscurity并且只会产生错误的安全感。在任何精心设计的密码系统中,密钥是唯一需要保密的东西。