2009-11-25 1 views
0

(Модераторы - это 3-й связанный пост нерешенной проблемы, теперь я отправляю все возможные детали и после внесения изменений в предыдущую обратную связь, хотя это полный пост и не зависит от предыдущих 2-х сообщений, если вы думаете, что это дубликат, пожалуйста, удалите предыдущие сообщения. спасибо)Отсутствующие номера в выходном потоке (с полными данными)

Это код функции

public void decrypt(final InputStream cph_in, final OutputStream out) 
{ 
    InputStream in; 
    try 
    { 
    // Bytes read from in will be decrypted 
    in = new CipherInputStream(cph_in, dcipher); 

    // Read in the decrypted bytes and write the cleartext to out 
    int numRead = 0; 
    //System.out.println(in.read(buf)); 
    while ((numRead = in.read(buf)) >= 0) 
    { 
    out.write(buf, 0, numRead); 
    System.out.println(numRead); 
    } 
    //out.close(); 
    } 
    catch (java.io.IOException e) 
    { 
    } 

здесь консольный вывод

the Cell Content : ;Xéü¿Uô{¼9¬ðM 
3 
the Cell Content : ïB 
the Cell Content : þ^[ÊN=—î™ì4´•z& 
3 
the Cell Content : @ûú!Í?+²uŸK^/?¤ 
3 
the Cell Content : ´ƒôœCëîé V­¢% 
3 
the Cell Content : q^ŽÐâ\Æn2bšcU 
3 
the Cell Content : ?³j8¥+¤ 
the Cell Content : R 
the Cell Content : 3ex­Ê]ý­v>>|Äð 
3 
the Cell Content : š¾‚ýËe©%Ä» 
the Cell Content : Æ´=OöÀ¶+'¸e£Ñßpö 
3 
the Cell Content : etO­„ïŸÞñ?Æü é 
the Cell Content : çë 

, когда я положил OutputStream в Excel это выглядит следующим образом (обратите внимание, 124, 129,130 ​​и т.д. отсутствует)

*** Здесь лежит проблема .. почему некоторые цифры отсутствуют.

123 

125 
126 
127 
128 


131 

133 

135 

137 
138 
139 
140 
141 

143 
144 

здесь является вызов функции

ByteArrayInputStream in = null; 
    FileOutputStream out = null; 

    HSSFWorkbook wb = new HSSFWorkbook(); 
    HSSFSheet sheet = wb.createSheet("new sheet"); 

/* KeyGenerator kgen = KeyGenerator.getInstance ("AES"); kgen.init (128); SecretKey key = kgen.generateKey(); byte [] encoded = key.getEncoded();

IOUtils.write (кодируются, новый FileOutputStream (новый файл ("C: \ Users \ а \ Desktop \ Key.txt"))); */

FileInputStream плавник = новый FileInputStream ("C: \ Key.txt "); DataInputStream din = new DataInputStream (fin);

байт b [] = новый байт [16];

din.read (b);

 InputStream excelResource=new FileInputStream(path); 
     Workbook rwb=Workbook.getWorkbook(excelResource); 
     int sheetCount=rwb.getNumberOfSheets(); 
     Sheet rs=rwb.getSheet(0); 
     int rows=rs.getRows(); 
     int cols=rs.getColumns(); 
      for(int i=0;i<rows;i++){ 
     for(int j=0;j<Col.length;j++){ 
       String theCell_00=rs.getCell(j,i).getContents(); 
       System.out.println("the Cell Content : "+theCell_00); 

       in = new ByteArrayInputStream(theCell_00.getBytes()); 
        out = new FileOutputStream("c:\\Decrypted.txt"); 

       try 
      { 

       //System.out.println(b); 
       SecretKey key1 = new SecretKeySpec(b, "AES"); 
       // Create encrypter/decrypter class 
       AESDecrypter encrypter = new AESDecrypter(key1); 

       encrypter.encrypt(new ByteArrayInputStream(theCell_00.getBytes()),new FileOutputStream("temp.txt")); 
       // Decrypt 
       // encrypter.encrypt(,new FileOutputStream("Encrypted.txt")); 

         encrypter.decrypt(in, out); 

и у меня есть ощущение, что будет требоваться даже остальная часть кода, так что я буду загружать исходный код на http://www.filesavr.com/aesencryption link text (банку, но не исполняемый файл. Для извлечения) Это как программные работы

После импорта в Eclipse и предоставления нужных библиотек POI Apace. вам нужно поместить некоторые данные в первый столбец файла excel c: \ MyExcel.xls для наших, например, 123 до 144 вам необходимо запустить DoEncryption.java , это преобразует все данные из MyExcel.xls в 128-битный ключ AES зашифрованную форму в c: \ workbook.xls , а также создать c: \ key.txt Когда workbook.xls и key.txt существуют в каталоге c и вы запустите DoDecryption.java, он создаст c: \ Decrypted.xls, содержащий все данные расшифрован, чтобы получить оригинал такой же, как MyExcel.xls

Некоторые части кода даже не используется так, чтобы решить эту проблему, пожалуйста, следующую последовательность только

Guys Пожалуйста, помогите меня. m рассчитывая на вас.

ответ

1

Вы не можете надежно хранить зашифрованный текст (который является двоичным) в ячейке. Я подозреваю, что кодировка испортила некоторые из ячеек. Попробуйте base64 или hex закодировать зашифрованный текст, а затем сохранить его в ячейке.

Если вам нужно использовать необработанные двоичные файлы, убедитесь, что ваша кодировка является латинской-1 везде. Latin-1 сохраняет двоичную последовательность.

+0

Можете ли вы рассказать мне, как реализовать любой из этих – rover12

 Смежные вопросы

  • Нет связанных вопросов^_^