2013-04-20 18 views
1

我看到java.In加密機制,以生成密鑰使用的Base64他們爲什麼我需要在這個加密

KeyGenerator keyGen = KeyGenerator.getInstance("DES"); 
Key secretKey = keyGen.generateKey(); 

byte[] keyBytes = secretKey.getEncoded() 
Key secretKey = keyGen.generateKey(); 

byte[] key = secretKey.getEncoded(); 

byte[] encodedKey=Base64.encodeBase64(key); 

String keyText = new String(encodedKey); 

我的問題是,爲什麼有什麼用Base64.encodeBase64(key)的需要。這是什麼問題,如果我直接使用

String keyText = new String(key); 

我confusing.Please幫助me.Thanks提前...

+2

「我很困惑。」 Indeeed ...;) – 2013-04-20 11:02:57

回答

2

不是字節的每個序列代表一個有效Stringyou need to know the character encoding in order to interpret a sequence of bytes as a string。由於Java的char是16位的,因此隨機的字節序列最終可能代表其中包含無效代碼點的字符串。使用Base-64編碼通過確保所有元素都是[A-Za-z0-9+/]範圍內的有效字符來解決此問題。

+0

我可以問另外一個問題 – PSR 2013-04-20 11:04:58

+0

你能在這裏看到我張貼的另一個問題http://stackoverflow.com/questions/16119632/how-securerandom-is-working-injava – PSR 2013-04-20 11:09:59

+0

你能看到我的問題 – PSR 2013-04-20 11:13:28

相關問題