Я не думаю, что безопасность могла бы быть причиной для параметра byte[]
в управляемой среде. Я не вижу никакой разницы в том, что он генерируется методом и вне его, так как byte[]
- массив базового типа - вряд ли будет иметь несколько реализаций. Если бы была возможная разница, то было бы более разумно, чтобы метод генерировал байтовый массив.
Без него уже указанная причина эффективности имеет больше смысла;В конце концов, байтовый массив может быть большим (-ish), и вы не можете дублировать эффективность вызова, который принимает байты. Существует также другой метод , который дополнительно принимает смещение и «счет» байтов для существующего массива. Это позволяет вам напрямую генерировать байты в массиве, который также может содержать другие данные (например, объединение IV и зашифрованного текста в байтовом массиве). Конечно, единственный параметр - это просто особый случай / удобный метод для этого вызова. Многопараметрический является наиболее важным для эффективности, так как в противном случае вам также пришлось бы дублировать шифротекст;Массивы не могут быть сокращены в конце концов. Было бы странно создавать метод с тем же именем, но с совершенно другой сигнатурой метода.
Другие структуры, такие как Java JCA, имеют те же методы для SecureRandom
. Таким образом, вполне вероятно, что авторы знали о таких платформах и решили имитировать эти существующие API, если не было достаточных оснований для изменений.