Лучшая практика для создания репозиториев подверсии?

Не используйте ase-128-cbc, используйте ase-128-ecb.

принимают только первые 16 байтов в качестве ключа, потому что ключ имеет 128 бит

[х1] хэш-выход печатается в шестнадцатеричном формате, каждый 2 символа представляет значение байта

hashpwd = echo -n $password| openssl sha1 | sed 's#.*=\\s*##g' | cut -c 1-32

openssl enc -aes-128-ecb -salt -in -out -K $ hashpwd

Код Java здесь:

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;


    //openssl enc -nosalt -aes-128-ecb
    // -in <input file>
    // -out <output file>
    // -K <16 bytes in hex, for example : "abc" can be hashed in SHA-1, the first 16 bytes in hex is a9993e364706816aba3e25717850c26c>
    private final static String TRANSFORMATION = "AES"; // use aes-128-ecb in openssl

public static byte[] encrypt(String passcode, byte[] data) throws CryptographicException {
        try {
            Cipher cipher = Cipher.getInstance(TRANSFORMATION);
            cipher.init(Cipher.ENCRYPT_MODE, genKeySpec(passcode));
            return cipher.doFinal(data);
        } catch (Exception ex) {
            throw new CryptographicException("Error encrypting", ex);
        }
    }


    public static String encryptWithBase64(String passcode, byte[] data) throws CryptographicException {
        return new BASE64Encoder().encode(encrypt(passcode, data));
    }

    public static byte[] decrypt(String passcode, byte[] data) throws CryptographicException {
        try {
            Cipher dcipher = Cipher.getInstance(TRANSFORMATION);
            dcipher.init(Cipher.DECRYPT_MODE, genKeySpec(passcode));
            return dcipher.doFinal(data);
        } catch (Exception e) {
            throw new CryptographicException("Error decrypting", e);
        }
    }


    public static byte[] decryptWithBase64(String passcode, String encrptedStr) throws CryptographicException {
        try {
            return decrypt(passcode, new BASE64Decoder().decodeBuffer(encrptedStr));
        } catch (Exception e) {
            throw new CryptographicException("Error decrypting", e);
        }
    }

    public static SecretKeySpec genKeySpec(String passcode) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        byte[] key = passcode.getBytes("UTF-8");
        MessageDigest sha = MessageDigest.getInstance("SHA-1");
        key = sha.digest(key);
        key = Arrays.copyOf(key, 16); // use only first 128 bit
        return new SecretKeySpec(key, TRANSFORMATION);
    }

Протестировано и передано в jdk6 и jdk8.

26
задан bahrep 9 October 2013 в 09:26
поделиться

7 ответов

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

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

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

12
ответ дан Zed 28 November 2019 в 07:18
поделиться
  • точка зрения управления SVN я предпочитаю 1 репозиторий.
  • точка зрения Программиста я предпочитаю 1 репозиторий.
  • Администратор Сервера я предпочитаю 1 repostitory.
  • точка зрения безопасности предпочтительно не поместить все Ваши яйца в одной корзине.

Ваша структура репозитория будет несколько уникальна для Вашего бизнеса, и это - продукты. Мы сохраняем наш в одном репозитории. Наша структура несколько как это.

  • /
    • Проекты
        <литий> Название проекта
          <литий> соединительная линия <литий> ответвления <литий> теги
        документация
      • <литий> Проект 1
    • Общие Библиотеки
        <литий> Супер строковый класс утилиты
    • Small
        <литий> улучшение энергии X
6
ответ дан J.J. 28 November 2019 в 07:18
поделиться

Мы используем один большой репозиторий, и просто структурировали все в подпапках (/project1,/project2 и т.д.), и это, кажется, хорошо работает.

проект Apache имеет огромный репозиторий SVN , и это, кажется, делает OK для них!:)

С точки зрения организации, структура Вы дали довольно разумные взгляды. Я думаю, что что-либо идет, в значительной степени, пока это рационально (т.е. спутывание каждого инструмента с каждым проектом является, вероятно, плохой идеей и т.д.). Так выберите что-то, что работает на Вас (инструменты/, проекты / и т.д.). Подрывная деятельность имеет довольно хорошую поддержку того, чтобы переместить вещи в репозитории также, таким образом, можно всегда изменяться при необходимости.

4
ответ дан 28 November 2019 в 07:18
поделиться

У нас есть единственный repo, это структурировано как этот. Что-либо, что работается на больше, чем несколькими людьми и/или в активной разработке, настраивается с соединительной линией/, отмечает ответвление / / под основной папкой.

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

3
ответ дан Tom Ritter 28 November 2019 в 07:18
поделиться

У нас есть отдельные репозитории для каждого проекта; но главная причина - в доступе, плюс, если клиенту нужна копия его источника, мы можем передать его с историей без особой суеты. Если вы посмотрите на конфигурационные файлы в conf, то не так сложно найти универсальный конфигурационный файл, который будет работать для всех ваших проектов. Мы делаем это так:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz

authz: ​​

[groups]
AOS = nathan,mark

[AOS:/]
@AOS = rw
frew = rw

и затем, конечно, passwd:

[users]
frew = password
nathan = awesome
mark = station
1
ответ дан Frew Schmidt 28 November 2019 в 07:18
поделиться

Попытайтесь сохранить материал, к которому регулярно получают доступ (код, сценарии) отдельный от 'неперезаписываемый и передать для резервного копирования' материал. Необходимость к контролю/обновлению тысячи jpegs только для изменения нескольких строк кода становится тусклой очень быстро.

1
ответ дан splattne 28 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: