chincharovpc
@chincharovpc

Как шифровать данные частями?

Получаю данные частями(примерно 10 частей)
Нужно зашифровать каждую часть и записать в один файл.

При дешифровании правильно расшифровывает только первую часть.
Как я понял при шифровании дописываются дополнительные байты, поэтому дешифровщик работает неправильно.
Как правильно зашифровать?

Использую алгоритм DES(нужно использовать именно его)
Функция шифрования
func Encrypt(key, iv, plainText []byte) (ciphertext []byte, err error) {
	block, err := des.NewCipher(key)
	if err != nil {
		return nil, err
	}

	blockSize := block.BlockSize()
	origData := pkcs5Padding(plainText, blockSize)
	blockMode := cipher.NewCBCEncrypter(block, iv)
	cryted := make([]byte, len(origData))
	blockMode.CryptBlocks(cryted, origData)

	return cryted, nil
}

func pkcs5Padding(src []byte, blockSize int) []byte {
	padding := blockSize - len(src)%blockSize
	padtext := bytes.Repeat([]byte{byte(padding)}, padding)

	return append(src, padtext...)
}
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
Перед каждой зашифрованной частью пишите в файл длину части открытого текста (в каком-то фиксированном формате, например 4 байта, если длина кусков не бывает больше 4 ГБ). При расшифровке используйте эти значения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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