Просмотр исходного кода

More optimal byte reversing

tags/0.9
9seconds 7 лет назад
Родитель
Сommit
7b43766a08
1 измененных файлов: 7 добавлений и 3 удалений
  1. 7
    3
      mtproto/wrappers/crypt.go

+ 7
- 3
mtproto/wrappers/crypt.go Просмотреть файл

@@ -95,9 +95,13 @@ func makeEncrypterDecrypter(key, iv []byte) (cipher.BlockMode, cipher.BlockMode)
95 95
 }
96 96
 
97 97
 func reverseBytes(data []byte) []byte {
98
-	rv := make([]byte, len(data))
99
-	for k, v := range data {
100
-		rv[len(data)-1-k] = v
98
+	dataLen := len(data)
99
+	rv := make([]byte, dataLen)
100
+
101
+	rv[dataLen/2] = data[dataLen/2]
102
+	for i := dataLen/2 - 1; i >= 0; i-- {
103
+		opp := dataLen - i - 1
104
+		rv[i], rv[opp] = data[opp], data[i]
101 105
 	}
102 106
 
103 107
 	return rv

Загрузка…
Отмена
Сохранить