[英]Java AES - message digest for the key
我最近搜索了用 AES 加密數據的 Java 代碼,並在網上找到了這段代碼:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(getSecretKey().getBytes("UTF-8"));
byte[] keyBytes = new byte[16];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
Key aesKey = new SecretKeySpec(keyBytes, "AES");
// Then encrypt
byte[] iv = initIV();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, aesKey, new IvParameterSpec(iv));
byte[] encrypted = cipher.doFinal(value.getBytes(encoding));
我想了解為什么開發人員使用帶有密鑰的 MessageDigest。 這種方法有什么好處,而不是寫:
Key aesKey = new SecretKeySpec(getSecretKey().getBytes("UTF-8"), "AES");
// Then encrypt
byte[] iv = initIV();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, aesKey, new IvParameterSpec(iv));
byte[] encrypted = cipher.doFinal(value.getBytes(encoding));
提前謝謝了
吉爾斯
顯着的區別在於,在上面的代碼中,應用了getSecretKey()
的哈希 (SHA-256) 來構建 AES 密鑰。
在下面的代碼中, getSecretKey()
被直接采用原始/應用。
...以上我認為“更安全”;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.