1
我正在處理使用自定義協議進行密碼通信的遺留應用程序。隨機AES密鑰在傳統的Java應用程序產生這樣的:在節點上生成AES密鑰
keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
keygen.generateKey().getEncoded();
我一直在找沒有運氣上crypto解決方案。我如何在nodejs上生成這個密鑰?
我正在處理使用自定義協議進行密碼通信的遺留應用程序。隨機AES密鑰在傳統的Java應用程序產生這樣的:在節點上生成AES密鑰
keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
keygen.generateKey().getEncoded();
我一直在找沒有運氣上crypto解決方案。我如何在nodejs上生成這個密鑰?
該代碼可能沒有你想象的那麼多。它只生成16(128/8)個安全隨機字節,然後在其周圍封裝一個關鍵對象。因此,使用nodejs,您只需生成16個字節並將算法提供給原始密鑰數據。
如果您要使用生成的密鑰,請確保您從getEncoded()
方法返回的字節創建二進制編碼的字符串或緩衝區。如果您需要密鑰爲過程中某個文本字符串,則可以使用十六進制編碼/解碼。
查看randomBytes()
和createCipheriv()
的信息。
AES密鑰只是密碼強的隨機字節,DES(奇偶校驗位)和RSA(質數計算)密鑰都不是。
加密密鑰不僅僅是隨機字節。請參閱http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html –
@JonathanRosenne:這是多少*隨機? –
@JonathanRosenne行,做了「密碼強大」,雖然我已經把「安全隨機」放在第一段... –