我不明白为什么java.lang.String不能在byte []中转换。
在线:
byte[] decData = io.decrypt(fileData, new Random(fileData.length));
我的编译器说:java.lang.String不能在byte []
中转换但我像这样初始化fileData:
byte[] fileData = new byte[fIn.available()];
io.decrypt定义如下:
public static String decrypt(byte[] data, Random key) {
byte[] byteKey = new byte[data.length];
key.nextBytes(byteKey);
return decrypt(data, byteKey);
}
Random是java.util.Random
所以我不明白为什么我做错了。
顺便说一句:我正在尝试制作一个简单的XOR en / de-crypter这是完整的代码:
Boolean decrypt = praseBoolean(Greenfoot.ask("decrypt? (y/n)"));
//Random rand = new Random();
if(!decrypt) {
File folder = new File("decrypted");
File[] toEncrypt = folder.listFiles();
//Long[] keys =
for(File file: toEncrypt) {
FileInputStream fIn = new FileInputStream(file);
byte[] fileData = new byte[fIn.available()];
fIn.read(fileData);
byte[] encData = io.encrypt(fileData, new Random(fileData.length));
io.saveEncryptedFile(encData, "encrypted/"+file.getName());
}
}
if(decrypt) {
File folder = new File("encrypted");
File[] toEncrypt = folder.listFiles();
//Long[] keys =
for(File file: toEncrypt) {
FileInputStream fIn = new FileInputStream(file);
byte[] fileData = new byte[fIn.available()];
fIn.read(fileData);
byte[] decData = io.decrypt(fileData, new Random(fileData.length));
io.saveEncryptedFile(encData, "decrypted/"+file.getName());
}
}
答案 0 :(得分:2)
io.decrypt
会返回String
,但您会将结果分配给byte[]
。所以把它改成
byte[] decData = io.decrypt(fileData, new Random(fileData.length)).getBytes();
或强>
String decData = io.decrypt(fileData, new Random(fileData.length));
答案 1 :(得分:1)
decrypt
会返回String
,但您尝试将其分配给byte[] decData
。只需将它分配给String
,你就可以了:
String decData = io.decrypt(fileData, new Random(fileData.length));
答案 2 :(得分:1)
您的解密方法返回String
。如果要从中获取字节数组,请在方法的结果上使用string.getBytes()
,或者首先返回一个字节数组。