Найдено результатов: 12

Шифрование Паролей

Каков самый быстрый, но безопасный способ шифрования паролей в (предпочтительно PHP), и для какого метода вы выбираете, является ли он портативным?

Другими словами, если я позже перенесу свой сайт на другой сервер, будут ли мои пароли продолжать работать?

Метод, который я использую сейчас, как мне было сказано, зависит от точных версий библиотек, установленных на сервере.

php   encryption   passwords    

441   7   16:03, 1st July, 2020


Почему плохой пароль вызывает "заполнение недопустимо и не может быть удалено"?

Мне нужно было какое-то простое строковое шифрование, поэтому я написал следующий код (с большим количеством "inspiration" отсюда ):

    // create and initialize a crypto algorithm
    private static SymmetricAlgorithm getAlgorithm(string password) {
        SymmetricAlgorithm algorithm = Rijndael.Create();
        Rfc2898DeriveBytes rdb = new Rfc2898DeriveBytes(
            password, new byte[] {
            0x53,0x6f,0x64,0x69,0x75,0x6d,0x20,             // salty goodness
            0x43,0x68,0x6c,0x6f,0x72,0x69,0x64,0x65
        }
        );
        algorithm.Padding = PaddingMode.ISO10126;
        algorithm.Key = rdb.GetBytes(32);
        algorithm.IV = rdb.GetBytes(16);
        return algorithm;
    }

    /* 
     * encryptString
     * provides simple encryption of a string, with a given password
     */
    public static string encryptString(string clearText, string password) {
        SymmetricAlgorithm algorithm = getAlgorithm(password);
        byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, algorithm.CreateEncryptor(), CryptoStreamMode.Write);
        cs.Write(clearBytes, 0, clearBytes.Length);
        cs.Close();
        return Convert.ToBase64String(ms.ToArray());
    }

    /*
     * decryptString
     * provides simple decryption of a string, with a given password
     */
    public static string decryptString(string cipherText, string password) {
        SymmetricAlgorithm algorithm = getAlgorithm(password);
        byte[] cipherBytes = Convert.FromBase64String(cipherText);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, algorithm.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(cipherBytes, 0, cipherBytes.Length);
        cs.Close();            
        return System.Text.Encoding.Unicode.GetString(ms.ToArray());
    }

Код, похоже, работает нормально, за исключением того, что при расшифровке данных с неверным ключом я получаю CryptographicException - "Padding is invalid and cannot be removed" - на строке cs.Close() в decryptString.

пример кода:

    string password1 = "password";
    string password2 = "letmein";
    string startClearText = "The quick brown fox jumps over the lazy dog";
    string cipherText = encryptString(startClearText, password1);
    string endClearText = decryptString(cipherText, password2);     // exception thrown

Мой вопрос в том, можно ли этого ожидать? Я бы подумал, что расшифровка с неверным паролем просто приведет к бессмысленному выходу, а не к исключению.

c#   .net   exception   encryption    

653   9   10:32, 7th August, 2020


Может ли прокси-сервер кэшировать SSL GETs? Если нет, то будет ли достаточно шифрования тела ответа?

Может ли (||любой) прокси-сервер кэшировать содержимое, запрошенное клиентом через https? Поскольку прокси-сервер не может видеть строку запроса или заголовки http, я думаю, что они не могут.

Я рассматриваю настольное приложение, управляемое рядом людей, стоящих за своими компаниями прокси. Это приложение может получить доступ к услугам через интернет, и я хотел бы воспользоваться встроенной инфраструктурой кэширования интернета для 'reads'. Если кэширующие прокси-серверы не могут кэшировать доставленное содержимое SSL, будет ли просто шифрование содержимого ответа жизнеспособным вариантом?

Я рассматриваю все запросы GET, которые мы хотим получить, будут запрошены через http с телом, зашифрованным с помощью асимметричного шифрования, где у каждого клиента есть ключ расшифровки. Всякий раз, когда мы хотим выполнить операцию GET, которая не является cachable, или операцию POST, она будет выполнена над SSL.

security   encryption   caching   ssl   proxy    

613   6   22:56, 4th August, 2020


Подходящая альтернатива CryptEncrypt

У нас есть ситуация в нашем продукте, где в течение длительного времени некоторые данные хранились в базе данных приложения в виде строки SQL (выбор сервера MS SQL или sybase SQL в любом месте), которая была зашифрована с помощью функции Windows API CryptEncrypt. (прямой и де-криптографический)

Проблема в том, что CryptEncrypt может производить NULL в выходных данных, что означает, что когда он хранится в базе данных, строковые манипуляции в какой-то момент усекут CipherText.

В идеале мы хотели бы использовать algo, который будет производить CipherText, который не содержит NULLs, поскольку это вызовет наименьшее количество изменений в существующих базах данных (изменение столбца со строки на двоичный и код для работы с двоичным вместо строк) и просто расшифрует существующие данные и повторно зашифрует с помощью нового алгоритма во время обновления базы данных.

Алгоритм не должен быть самым безопасным, так как база данных уже находится в достаточно безопасной среде (а не в открытой сети / межсистемных сетях), но должен быть лучше, чем ROT13 (который я могу почти расшифровать в своей голове сейчас!)

edit: кстати, есть ли конкретная причина для изменения шифротекста на шифротекст? шифротекст кажется более широко используемым...

c++   encryption   winapi    

441   4   10:34, 19th August, 2020


Шифрование в веб-сервисах C#

Я ищу простой способ зашифровать мое сообщение soap в моем веб-сервисе C#.

Я искал WSE 3.0 , но, похоже, Microsoft отказалась от его поддержки, и поэтому его не так просто использовать.
Похоже, что WCF мог бы быть вариантом, но я предпочитаю не обновляться с .NET 2.0 .

Какой-нибудь простой и понятный метод шифрования?

c#   web-services   security   encryption    

429   6   23:04, 25th August, 2020


Как я могу использовать шифрование/расшифровку 3DES в Java?

Каждый метод, который я пишу для кодирования строки в Java с использованием 3DES, не может быть расшифрован обратно в исходную строку. Есть ли у кого-нибудь простой фрагмент кода, который может просто кодировать, а затем декодировать строку обратно в исходную строку?

Я знаю, что совершаю очень глупую ошибку где-то в этом коде. Вот с чем я работал до сих пор:

** обратите внимание, что я не возвращаю текст BASE64 из метода encrypt, и я не снимаю кодировку base64 в методе decrypt, потому что я пытался увидеть, не ошибся ли я в части BASE64 головоломки.

public class TripleDESTest {

    public static void main(String[] args) {

        String text = "kyle boon";

        byte[] codedtext = new TripleDESTest().encrypt(text);
        String decodedtext  = new TripleDESTest().decrypt(codedtext);

        System.out.println(codedtext);
        System.out.println(decodedtext);
    }

    public byte[] encrypt(String message) {
        try {
            final MessageDigest md = MessageDigest.getInstance("md5");
            final byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
            final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            for (int j = 0,  k = 16; j < 8;)
            {
                keyBytes[k++] = keyBytes[j++];
            }

            final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
            final IvParameterSpec iv = new IvParameterSpec(new byte[8]);
            final Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, key, iv);

            final byte[] plainTextBytes = message.getBytes("utf-8");
            final byte[] cipherText = cipher.doFinal(plainTextBytes);
            final String encodedCipherText = new sun.misc.BASE64Encoder().encode(cipherText);

            return cipherText;    
        }
        catch (java.security.InvalidAlgorithmParameterException e) { System.out.println("Invalid Algorithm"); }
        catch (javax.crypto.NoSuchPaddingException e) { System.out.println("No Such Padding"); }
        catch (java.security.NoSuchAlgorithmException e) { System.out.println("No Such Algorithm"); }
        catch (java.security.InvalidKeyException e) { System.out.println("Invalid Key"); }
        catch (BadPaddingException e) { System.out.println("Invalid Key");}
        catch (IllegalBlockSizeException e) { System.out.println("Invalid Key");}
        catch (UnsupportedEncodingException e) { System.out.println("Invalid Key");}

        return null;
    }

    public String decrypt(byte[] message) {
        try
        {
            final MessageDigest md = MessageDigest.getInstance("md5");
            final byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
            final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
            for (int j = 0,  k = 16; j < 8;)
            {
                keyBytes[k++] = keyBytes[j++];
            }

            final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
            final IvParameterSpec iv = new IvParameterSpec(new byte[8]);
            final Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
            decipher.init(Cipher.DECRYPT_MODE, key, iv);

            //final byte[] encData = new sun.misc.BASE64Decoder().decodeBuffer(message);
            final byte[] plainText = decipher.doFinal(message);

            return plainText.toString();            
        }
        catch (java.security.InvalidAlgorithmParameterException e) { System.out.println("Invalid Algorithm"); }
        catch (javax.crypto.NoSuchPaddingException e) { System.out.println("No Such Padding"); }
        catch (java.security.NoSuchAlgorithmException e) { System.out.println("No Such Algorithm"); }
        catch (java.security.InvalidKeyException e) { System.out.println("Invalid Key"); }
        catch (BadPaddingException e) { System.out.println("Invalid Key");}
        catch (IllegalBlockSizeException e) { System.out.println("Invalid Key");}
        catch (UnsupportedEncodingException e) { System.out.println("Invalid Key");}     
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
}

java   encryption   3des    

473   5   08:15, 27th August, 2020


Программное шифрование конфигурационного файла внутри .NET

Не мог бы кто-нибудь сделать краткое описание того, как программно зашифровать конфигурационный файл в .NET, предпочтительно в C#.

Я бы хотел сделать что-то вроде проверки запуска приложения, чтобы увидеть, является ли раздел незащищенным, и если да, то зашифровать его. Это касается как настроек, так и строк подключения.

Также если бы кто-нибудь мог перечислить типы шифровальщиков и в чем разница между ними.

Я не знаю, является ли код для выполнения этого в обычном WinForms-приложении прозрачным для выполнения этого в ASP.NET.

c#   .net   configuration   encryption   configuration-files    

443   5   21:07, 21st August, 2020


Алгоритм за MD5Crypt

Я работаю с Subversion на основе Windows и хотел бы написать простую утилиту в .NET для работы с файлом пароля Apache. Я понимаю, что он использует функцию, называемую MD5Crypt, но я не могу найти описание алгоритма, кроме того, что в какой-то момент он использует MD5 для создания hash.

Может ли кто-нибудь описать алгоритм MD5Crypt и формат строки пароля?

.net   svn   apache   md5   crypt    

472   4   01:54, 25th August, 2020


Почему в поле ввода больше, чем его выход?

Я не понимаю, откуда берутся дополнительные биты в этой статье о s-boxes. Почему s-box не принимает такое же количество битов для ввода, как и для вывода?

cryptography    

395   2   16:44, 18th August, 2020


Безопасные онлайн-списки рекордов для не-веб-игр

Я играю с родной (не веб -) однопользовательской игрой, которую я пишу, и мне пришло в голову, что наличие списка рекордов daily/weekly/all-time онлайн (думаю, что Xbox Live Leaderboard) сделает игру намного интереснее, добавив некоторое (небольшое) количество сообщества и конкуренции. Однако я боюсь, что люди увидят такую функцию, как приглашение к взлому, что будет препятствовать обычным игрокам из-за невероятно высоких баллов.

Я думал об очевидных способах предотвращения таких попыток (public/private key encryption, например), но я выяснил достаточно простые способы, которыми хакеры могли бы обойти все мои идеи (извлечение открытого ключа из двоичного файла и, таким образом, отправка поддельных зашифрованных результатов, например).

Вы когда-нибудь реализовывали онлайн-список рекордов или таблицу лидеров? Нашли ли вы разумно защищенный от хакеров способ реализации этого? Если да, то как вы это сделали? Каковы ваши впечатления от попыток взлома?

encryption   leaderboard    

466   10   18:46, 16th August, 2020


шифрованные диски — Чем?

Нужно зашифровать весь раздел что бы доступ к нему был как из винды (ХР и выше) так и из линукса.

На данный момент использую TrueCrypt, который позволяет делать шифрованные диски как с целых разделов так и из файлов (которые и используются как контейнеры).

Какие есть альтернативы?

TrueCrypt    

344   5   11:01, 2nd October, 2020


Truecrypt. Смонтировать образ по сети

Есть 2 машины.

1 — сервер под линуксом. На нем хочется хранить сам файл-контейнер.
2 — клиентская машина под Windows находится НЕ в локальной сети с сервером, доступ к серверу по интернету. На нем нужно монтировать файл-контейнер.
Правильно ли я понимаю, что на первой машине нужно поднять самбу, подключить диск с контейнером к виндовой машине как сетевой диск и смонтировать образ в truecrypt?

Или есть какой-то более рациональный метод? Расшаривать сетевой диск смонтированный на сервере не вариант. LUKS тоже. Не будет ли тогда truecrypt пытаться закешировать весь файл контейнер?

Спасибо.

Шифрование   Восстановление   данных   TrueCrypt    

398   4   13:16, 1st October, 2020