Как установить ключ шифрования Base64 в качестве переменной среды (системы) в Windows 10

391
user3216506

У меня есть приложение, которое подключается к BigQuery, используя несколько кредитов из файла .json. Поскольку это приложение в конечном итоге будет находиться в Pivotal Cloud Foundry, и его нужно будет установить в качестве переменной среды, предоставляемой пользователем, я использовал шифрование base64 для кодирования содержимого файла .json в ключ base64.

Идея заключается в том, что я могу затем использовать ключ в качестве значения переменной среды, чтобы можно было извлекать всю информацию о подключении BigQuery API из файла .json в одну переменную среды - используя ключ base64, вместо того, чтобы иметь много переменных пары ключ = значение для выполнения. этот.

Примечание. Ключ base64 содержит 3165 символов, включая символы новой строки.

Для справки краткий фрагмент ключа base64:

nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE\ p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09\ 1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz\ 

Я знаю, что это может быть установлено в macOS как системная переменная (я видел это, и приложение устанавливает соединения и работает правильно), но я не могу сделать это в Windows 10.

Мне известно об ограничении максимальной длины системных переменных в Windows, но я не нашел решения, позволяющего установить его, используя «GOOGLE_JSON_B64» в качестве имени переменной среды и затем ключ 3165 в качестве значения переменной среды.

У кого-нибудь есть обходной путь? Должен ли я прочитать, что они вводят из файла? Если так, как это будет сделано в Windows 10? Нужно ли мне устанавливать путь каким-либо образом?

Любое понимание будет с благодарностью.

0
[base64] (https://en.wikipedia.org/wiki/Base64) ** _ не является шифрованием _ ** ... ключ, которым вы только что частично поделились, больше не должен использоваться. Attie 5 лет назад 0

1 ответ на вопрос

0
harrymc

Документация Microsoft гласит, что переменная окружения в Windows ограничена только 32 767 символами ( ссылка ). Здесь не сказано, как создать очень длинную переменную.

Проблема здесь в том, что инструменты, предоставляемые Windows, имеют свои ограничения:

Команда set и команда setx усекают значения до 1023 символов.

Можно установить переменные среды непосредственно в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, но использование regedit для этого не удастся, поскольку вводимые строки с клавиатуры ограничены 2047 символами.

Насколько я вижу, единственный оставшийся вариант - написать небольшую программу, которая обновляет реестр напрямую. Используемая функция Windows API - SetEnvironmentVariable, документация которой гласит:

Максимальный размер пользовательской переменной среды составляет 32 767 символов.

Можно надеяться, что это, по крайней мере, правильно. Здесь вы можете столкнуться с максимальной длиной строки, принятой компилятором, но в программе вы можете создавать такую ​​длинную строку поэтапно.

Зачем вам нужны эти новые символы строки? harrymc 5 лет назад 0
The new line characters are part of the key. The base64 encoding represents the .json file, which has several lines/ components in it. Meaning, the .json file isn't just one key/value pair, it is several lines of creds, to include service account, service account pword, private key id, private key, client email, client id, and more. So each new line character in the key represents a key/value pair in the .json file. All parts of the json file/ key with new line characters are needed to make said connection to BigQuery. user3216506 5 лет назад 0
When I collapsed the key by removing all white-spaces and re-ran set command I noticed it was able to store more of the key but not all. It seems to of reached a limit of 1,023 characters in total. user3216506 5 лет назад 0
Эта область - большой беспорядок - я переписал свой ответ. harrymc 5 лет назад 0