Как зациклить в файле массив байтов
public byte[][] createShares(byte[] secret, int shares, int threshold, Random rnd)
{
// some code here
}
У меня есть этот метод, и я собираюсь применить SSS для файла массива байтов. byte [] secret - параметр метода, в котором я собираюсь передать в качестве аргумента каждый байт файла, а затем применить для каждого байта алгоритм SSS. Я также реализовал Java-код того, как прочитать файл и затем преобразовать его в байтовый массив. Я застрял в том, как реализовать этот алгоритм SSS для каждого байта файлов. Я знаю, что мне нужен цикл для этого. Суть в том, что я хочу вызвать свой главный метод this byte [] secret и назначить ему каждый байт файла, но я застрял в том, как это сделать.
Мой метод, который будет читать файл и преобразовывать его в массив битов, как показано ниже:
public byte[] readFile(File fileName) throws IOException {
InputStream is = new FileInputStream(fileName);
// Get the size of the file
long length = fileName.length();
// to ensure that file is not larger than Integer.MAX_VALUE.
if (length > Integer.MAX_VALUE) {
throw new IOException("Could not completely read file " + fileName.getName() + " as it is too long (" + length + " bytes, max supported " + Integer.MAX_VALUE + ")");
}
// Create the byte array to hold the data
byte[] secret = new byte[(int)length];
int offset = 0;
int numRead = 0;
while (offset < secret.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < secret.length) {
throw new IOException("Could not completely read file " + fileName.getName());
}
// Close the input stream and return bytes
is.close();
return secret;
}
Может кто-нибудь помочь мне, как зациклить для каждого байта файла, а затем передать его в качестве аргумента моему методу createhares?
1 ответ
Я понимаю, что вы пытаетесь прочитать байты из файла, а также пытаетесь перебрать байт [].
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Random;
import java.nio.file.Path;
public class SSSAlgorithm {
public static void main(String[] args) {
System.out.println("Reading file");
try {
byte[] secret = readFile();
createShares(secret, 2, 3, 100);
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[][] createShares(byte[] secret, int shares, int threshold, int i)
{
// some code here
for (byte coeff : secret){
System.out.println("Use the byte here " + coeff);
}
return null;
}
public static byte[] readFile() throws IOException {
Path path = Paths.get("/Users/droy/var/crypto.txt");
try {
byte[] secret = Files.readAllBytes(path);
return secret;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
**Выход:
Хранится в секрете как 1234
представление байтового массива: [49, 50, 51, 52, 10]
Используйте байт здесь 49
Используйте байт здесь 50
Используйте байт здесь 51
Используйте байт здесь 52
Используйте байт здесь 10