ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

[Java] Реализация base64
  #1  
Старый 16.03.2010, 13:05
Byte_
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
Провел на форуме:
351188

Репутация: 65
По умолчанию [Java] Реализация base64

Пытаюсь реализовать base64 "на коленке". Просто для практики (про существование готового решения я знаю).
Шифрование:
Код:
public void actionPerformed(ActionEvent e)
            {
                status.setText("Идёт обработка...");
                try
                {
                    int size;
                    InputStream is = new FileInputStream(inpFile.getText());
                    size = is.available();
                    int ost = size%3;
                    if(ost == 1)
                    {
                        size += 2;
                    }else if(ost == 2)
                    {
                        size += 1;
                    }
                    int bnSize = (size/3)*4;
                    byte[] b = new byte[size];
                    byte[] bn = new byte[bnSize];
                    is.read(b);
                    is.close();
                    int j = 0;
                    for(int i = 0;i<size;i+=3)
                    {
                        bn[j] = (byte) ((b[i] & 0xfc) >> 2);
                        bn[j+1] = (byte) (((b[i] & 0x03) << 4) + ((b[i+1] & 0xf0) >> 4));
                        bn[j+2] = (byte) (((b[i+1] & 0x0f) << 2) + ((b[i+2] & 0xc0) >> 6));
                        bn[j+3] = (byte) (b[i+2] & 0x3f);
                        j+=4;
                    }
                    String res = new String("");
                    for(int i = 0;i < bnSize;i++)
                    {
                        res += b64_k.charAt(bn[i]);
                    }
                    if(ost == 1)
                    {
                        res = res.substring(0,res.length() - 2) + "==";
                    }else if(ost == 2)
                    {
                        res = res.substring(0,res.length() - 1) + "=";
                    }
                    OutputStream os = new FileOutputStream(outFile.getText());
                    os.write(res.getBytes());
                    os.close();
                    status.setText("Обработка завершена. Программа готова.");
                }catch(Exception ex)
                {
                    status.setText("Обработка завершена с ошибкой " + ex.getMessage() + ". Программа готова.");
                }
            }
Расшифровка:
Код:
public void actionPerformed(ActionEvent e)
            {
                status.setText("Идёт обработка...");
                try
                {
                    int size;
                    InputStream is = new FileInputStream(inpFile.getText());
                    size = is.available();
                    byte[] b = new byte[size];
                    is.read(b);
                    is.close();
                    int bnSize = (size/4)*3;
                    byte[] bn = new byte[bnSize];
                    int j = 0;
                    for(int i = 0;i < size;i+=4)
                    {
                        bn[j] = (byte) ((b[i] << 2) + ((b[i+1] & 0x03) >> 4));
                        bn[j+1] = (byte) (((b[i+1] & 0xf) << 4) + ((b[i+2] & 0x3c) >> 2));
                        bn[j+2] = (byte) (((b[i+2] & 0x3) << 6) + b[i+3]);
                        j+=3;
                    }
                    System.out.println(new String(bn));
                    status.setText("Обработка завершена. Программа готова.");
                }catch(Exception ex)
                {
                    status.setText("Обработка завершена с ошибкой " + ex.getMessage() + ". Программа готова.");
                }
            }
Проблема в том, что зашифровывает отлично, а расшифровывает не корректно (возвращает муть). 2 дня разбираюсь, не могу понять в чём проблема.
Если кто разбирается в алгоритмизации, буду благодарен. Просто заклинило =)
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С меня - мего прибыльная идея, с Вас - реализация. Slapp Социальные сети 23 25.01.2010 16:13
Открытая реализация нейронной сети для распознавания изображений darkwkz Мировые новости 7 14.10.2009 03:56
Hash-Analyzer [определение типа хеша] Fristail Расшифровка хешей 2 12.10.2009 01:38
Реализация работы через proxy [c#] MaDfUn С/С++, C#, Delphi, .NET, Asm 8 12.02.2009 12:09
Base64 в PHP aka PSIH PHP, PERL, MySQL, JavaScript 7 31.10.2006 20:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ