我想用AES加密實現一個自定義密鑰,並且我已經找到了下面的實現和關於這個的詳細信息。如何使用存儲在密鑰庫中的自定義密鑰執行AES加密?
byte[] key = (SALT2 + username + my_custom_secret_key).getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16); // use only first 128 bit
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
但我有以下疑點:
byte[] my_key = (SALT2 + username + my_custom_secret_key).getBytes("UTF-8");
SecretKeySpec secretKeySpec = new SecretKeySpec(my_key, "AES");
如果我是用典型事例,如:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
- 如何/我應該在哪裏存儲我的祕密密鑰即「mysecretkey_123456」
- 爲什麼需要「散列」「(SALT2 + usern ame + password)「使用SHA-1/2並將byte []數組傳遞給SecretKeySpec?
- 爲什麼我無法將明文密鑰作爲字節[]發送?
- 我試圖確保「密鑰」是動態的,以便它基於salt +用戶名+ my_custom_secret_key,以便相同的加密字符串將具有不同的輸出。
How to generate SALT value in Java?
我想2個Java程序之間共享我的所謂的AES「自定義密碼」這樣我們就可以使用相同的密鑰來加密和解密數據。出於安全原因,我如何保護/存儲我的「自定義密碼」? – youcanlearnanything
我想使用「密碼」而不是密鑰的原因是因爲我希望密文在每次使用時都改變。即基於每次服務器啓動,或每個用戶的會話或每個用戶的事務。 – youcanlearnanything
在系統密鑰存儲,拇指驅動器上,在受保護的帳戶,在啓動過程中輸入它,在一個加密的配置文件。完整的密鑰管理在這裏討論有點多。當您需要完全自主的應用程序時,您可能只能*密碼*密碼。最後你需要將它存儲在某個地方,再次加密會導致雞蛋問題。 –