How to set Base64 encryption key as Environment (system) Variable on Windows 10
I have an application that connects to BigQuery using multiple creds from .json file. Being that this app will eventually reside on Pivotal Cloud Foundry and will need to be set as User Provided Environment Variable I have used base64 encryption to encode the contents of the .json file into a base64 key.
The idea is I can then use the key as the value of the environment variable so I can pull in all BigQuery API connection info from .json file into one environment variable - using base64 key, instead of having many key=value pair variables to accomplish this.
Note: The base64 key has 3,165 characters - including new line characters.
For reference a short snippet of base64 key is:
nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz
I know this can be set on macOS as system variable (I've seen it and application makes connections and works correctly) but I am not able to do this on Windows 10.
I'm aware of the max length constraint for system variables on Windows but haven't came across a solution to be able to set this using "GOOGLE_JSON_B64" as environment variable name and then the 3,165 key as the environment variable value.
Does anyone have a workaround?
Any insight would be greatly appreciated.
windows-10 environment-variables json base64
add a comment |
I have an application that connects to BigQuery using multiple creds from .json file. Being that this app will eventually reside on Pivotal Cloud Foundry and will need to be set as User Provided Environment Variable I have used base64 encryption to encode the contents of the .json file into a base64 key.
The idea is I can then use the key as the value of the environment variable so I can pull in all BigQuery API connection info from .json file into one environment variable - using base64 key, instead of having many key=value pair variables to accomplish this.
Note: The base64 key has 3,165 characters - including new line characters.
For reference a short snippet of base64 key is:
nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz
I know this can be set on macOS as system variable (I've seen it and application makes connections and works correctly) but I am not able to do this on Windows 10.
I'm aware of the max length constraint for system variables on Windows but haven't came across a solution to be able to set this using "GOOGLE_JSON_B64" as environment variable name and then the 3,165 key as the environment variable value.
Does anyone have a workaround?
Any insight would be greatly appreciated.
windows-10 environment-variables json base64
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48
add a comment |
I have an application that connects to BigQuery using multiple creds from .json file. Being that this app will eventually reside on Pivotal Cloud Foundry and will need to be set as User Provided Environment Variable I have used base64 encryption to encode the contents of the .json file into a base64 key.
The idea is I can then use the key as the value of the environment variable so I can pull in all BigQuery API connection info from .json file into one environment variable - using base64 key, instead of having many key=value pair variables to accomplish this.
Note: The base64 key has 3,165 characters - including new line characters.
For reference a short snippet of base64 key is:
nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz
I know this can be set on macOS as system variable (I've seen it and application makes connections and works correctly) but I am not able to do this on Windows 10.
I'm aware of the max length constraint for system variables on Windows but haven't came across a solution to be able to set this using "GOOGLE_JSON_B64" as environment variable name and then the 3,165 key as the environment variable value.
Does anyone have a workaround?
Any insight would be greatly appreciated.
windows-10 environment-variables json base64
I have an application that connects to BigQuery using multiple creds from .json file. Being that this app will eventually reside on Pivotal Cloud Foundry and will need to be set as User Provided Environment Variable I have used base64 encryption to encode the contents of the .json file into a base64 key.
The idea is I can then use the key as the value of the environment variable so I can pull in all BigQuery API connection info from .json file into one environment variable - using base64 key, instead of having many key=value pair variables to accomplish this.
Note: The base64 key has 3,165 characters - including new line characters.
For reference a short snippet of base64 key is:
nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz
I know this can be set on macOS as system variable (I've seen it and application makes connections and works correctly) but I am not able to do this on Windows 10.
I'm aware of the max length constraint for system variables on Windows but haven't came across a solution to be able to set this using "GOOGLE_JSON_B64" as environment variable name and then the 3,165 key as the environment variable value.
Does anyone have a workaround?
Any insight would be greatly appreciated.
windows-10 environment-variables json base64
windows-10 environment-variables json base64
edited Dec 18 '18 at 18:46
user3216506
asked Sep 10 '18 at 18:33
user3216506user3216506
11
11
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48
add a comment |
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48
add a comment |
1 Answer
1
active
oldest
votes
Microsoft's documentation says that an environment variable on Windows is only limited to 32,767 characters
(link).
It does not say how to create a very long variable.
The problem here is that the tools that Windows provides all have their
limits :
The
set command
and the
setx command
truncate values to 1023 characters.
One can set environment variables directly in the registry at
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
,
but using regedit for that will fail because entered strings via the keyboard
are limited to 2047 characters.
As far as I can see, the only remaining option is to write a small
program that updates directly the registry.
The Windows API function to use is
SetEnvironmentVariable,
whose documentation says :
The maximum size of a user-defined environment variable is 32,767 characters.
One hopes that this, at least, is correct.
You may run here into the maximal line-length that is accepted by the
compiler, but in a program you are able to construct such a long string
in steps.
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1356993%2fhow-to-set-base64-encryption-key-as-environment-system-variable-on-windows-10%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Microsoft's documentation says that an environment variable on Windows is only limited to 32,767 characters
(link).
It does not say how to create a very long variable.
The problem here is that the tools that Windows provides all have their
limits :
The
set command
and the
setx command
truncate values to 1023 characters.
One can set environment variables directly in the registry at
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
,
but using regedit for that will fail because entered strings via the keyboard
are limited to 2047 characters.
As far as I can see, the only remaining option is to write a small
program that updates directly the registry.
The Windows API function to use is
SetEnvironmentVariable,
whose documentation says :
The maximum size of a user-defined environment variable is 32,767 characters.
One hopes that this, at least, is correct.
You may run here into the maximal line-length that is accepted by the
compiler, but in a program you are able to construct such a long string
in steps.
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
add a comment |
Microsoft's documentation says that an environment variable on Windows is only limited to 32,767 characters
(link).
It does not say how to create a very long variable.
The problem here is that the tools that Windows provides all have their
limits :
The
set command
and the
setx command
truncate values to 1023 characters.
One can set environment variables directly in the registry at
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
,
but using regedit for that will fail because entered strings via the keyboard
are limited to 2047 characters.
As far as I can see, the only remaining option is to write a small
program that updates directly the registry.
The Windows API function to use is
SetEnvironmentVariable,
whose documentation says :
The maximum size of a user-defined environment variable is 32,767 characters.
One hopes that this, at least, is correct.
You may run here into the maximal line-length that is accepted by the
compiler, but in a program you are able to construct such a long string
in steps.
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
add a comment |
Microsoft's documentation says that an environment variable on Windows is only limited to 32,767 characters
(link).
It does not say how to create a very long variable.
The problem here is that the tools that Windows provides all have their
limits :
The
set command
and the
setx command
truncate values to 1023 characters.
One can set environment variables directly in the registry at
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
,
but using regedit for that will fail because entered strings via the keyboard
are limited to 2047 characters.
As far as I can see, the only remaining option is to write a small
program that updates directly the registry.
The Windows API function to use is
SetEnvironmentVariable,
whose documentation says :
The maximum size of a user-defined environment variable is 32,767 characters.
One hopes that this, at least, is correct.
You may run here into the maximal line-length that is accepted by the
compiler, but in a program you are able to construct such a long string
in steps.
Microsoft's documentation says that an environment variable on Windows is only limited to 32,767 characters
(link).
It does not say how to create a very long variable.
The problem here is that the tools that Windows provides all have their
limits :
The
set command
and the
setx command
truncate values to 1023 characters.
One can set environment variables directly in the registry at
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
,
but using regedit for that will fail because entered strings via the keyboard
are limited to 2047 characters.
As far as I can see, the only remaining option is to write a small
program that updates directly the registry.
The Windows API function to use is
SetEnvironmentVariable,
whose documentation says :
The maximum size of a user-defined environment variable is 32,767 characters.
One hopes that this, at least, is correct.
You may run here into the maximal line-length that is accepted by the
compiler, but in a program you are able to construct such a long string
in steps.
edited Sep 11 '18 at 16:09
answered Sep 10 '18 at 19:31
harrymcharrymc
255k14265566
255k14265566
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
add a comment |
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
Why do you need these new line characters?
– harrymc
Sep 11 '18 at 13:02
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:17
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
Sep 11 '18 at 15:19
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
Sep 11 '18 at 15:19
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
This area is a big mess - I rewrote my answer.
– harrymc
Sep 11 '18 at 16:10
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1356993%2fhow-to-set-base64-encryption-key-as-environment-system-variable-on-windows-10%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
base64 is not encryption... the key you just partially shared should not be used again.
– Attie
Sep 10 '18 at 20:48