它只是看起來像你混淆了一些獨立的概念,是相當新到Java爲好。 Base64是一種將「人類不可讀」字節數組轉換爲「人類可讀」字符串(編碼)和其他方式(解碼)的編碼類型。它通常用於將二進制數據作爲字符傳輸或存儲在嚴格要求的地方(由於協議或存儲類型)。
的SecureRandom
事情不是編碼器或解碼器。它返回的值爲random,與某個cipher或encoder沒有任何關係。以下是來自前給予鏈接一部分摘錄:
ran·dom
adj.
1. Having no specific pattern, purpose, or objective
Cipher
In cryptography , a cipher (or cypher) is an algorithm for performing encryption or decryption — a series of well-defined steps that can be followed as a procedure.
Encoding
Encoding is the process of transforming information from one format into another. The opposite operation is called decoding .
我強烈建議您對齊這些概念爲自己(點擊鏈接瞭解更多關於他們),而不是把他們扔在一個大的同一個洞裏。這裏的至少一個SSCCE其示出了如何可以正確編碼/使用Base64解碼(隨機)字節陣列(以及如何顯示數組作爲字符串(人類可讀的格式)):
package com.stackoverflow.q2535542;
import java.security.SecureRandom;
import java.util.Arrays;
import org.apache.commons.codec.binary.Base64;
public class Test {
public static void main(String[] args) throws Exception {
// Generate random bytes and show them.
byte[] bytes = new byte[16];
SecureRandom.getInstance("SHA1PRNG").nextBytes(bytes);
System.out.println(Arrays.toString(bytes));
// Base64-encode bytes and show them.
String base64String = Base64.encodeBase64String(bytes);
System.out.println(base64String);
// Base64-decode string and show bytes.
byte[] decoded = Base64.decodeBase64(base64String);
System.out.println(Arrays.toString(decoded));
}
}
(使用Commons Codec Base64由路)
下面是輸出的一個例子:
[14, 52, -34, -74, -6, 72, -127, 62, -37, 45, 55, -38, -72, -3, 123, 23]
DjTetvpIgT7bLTfauP17Fw==
[14, 52, -34, -74, -6, 72, -127, 62, -37, 45, 55, -38, -72, -3, 123, 23]
爲什麼你的Base64編碼譯碼如果你自己剛剛創建它作爲一個隨機字節數組的現時價值? – Thilo 2010-03-29 03:14:02