HMAC密钥是否应该是硬编码的?

时间:2016-05-13 03:40:49

标签: authentication jwt hmac

因为如果一个坏员工偷了它,他可以模仿任何用户 如果它不应该被硬编码,那么它应该被推迟呢? 我正在考虑实施JWT身份验证。

1 个答案:

答案 0 :(得分:0)

HMAC密钥是纯文本。作为任何私人/秘密文本,您应该避免将(硬编码)文本存储为简单/纯文本字符串,因为它可以使用反汇编显示。

所以是的,以某种方式混淆密钥,至少进行简单的文本转换是一件好事。通常,您可以选择任何类型的转换。

其中一种方法是使用编码/解码进行转换:您的密钥作为编码字符串存储在源中,并在需要时在运行时解码。例如,您可以使用Google建议的XOR加密:

static String stringTransform(String s, int i) {
   char[] chars = s.toCharArray();
   for(int j = 0; j<chars.length; j++)
      chars[j] = (char)(chars[j] ^ i);
   return String.valueOf(chars);
}

此功能应该用于加密和解密,&#34; i&#34;是一个随机值。