Informationen zu verschlüsselten Geheimnissen
Mit mehreren REST-API-Endpunkten können Sie geheime Schlüssel zu GitHub erstellen. Um diese Endpunkte zu verwenden, müssen Sie den geheimen Wert mithilfe von libsodium verschlüsseln. Weitere Informationen finden Sie in der libsodium-Dokumentation.
Um einen geheimen Schlüssel zu verschlüsseln, benötigen Sie einen base64-codierten öffentlichen Schlüssel. Sie können einen öffentlichen Schlüssel aus der REST-API abrufen. Um zu bestimmen, welcher Endpunkt zum Abrufen des öffentlichen Schlüssels verwendet werden soll, schauen Sie sich die Dokumentation für den encrypted_value Parameter im Endpunkt an, den Sie zum Erstellen eines geheimen Schlüssels verwenden möchten.
Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Node.js
Wenn Sie Node.js verwenden, können Sie Ihr Geheimnis mithilfe der Bibliothek libsodium-wrappers verschlüsseln. Weitere Informationen finden Sie unter libsodium-wrappers.
Ersetzen Sie im folgenden Beispiel YOUR_SECRET durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie YOUR_BASE64_KEY durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.
ORIGINAL ist kein Platzhalter; es ist ein Parameter für die libsodium-wrappers-Bibliothek.
const sodium = require('libsodium-wrappers')
const secret = 'YOUR_SECRET'
const key = 'YOUR_BASE64_KEY'
//Check if libsodium is ready and then proceed.
sodium.ready.then(() => {
// Convert the secret and key to a Uint8Array.
let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)
let binsec = sodium.from_string(secret)
// Encrypt the secret using libsodium
let encBytes = sodium.crypto_box_seal(binsec, binkey)
// Convert the encrypted Uint8Array to Base64
let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)
// Print the output
console.log(output)
});
const sodium = require('libsodium-wrappers')
const secret = 'YOUR_SECRET'
const key = 'YOUR_BASE64_KEY'
//Check if libsodium is ready and then proceed.
sodium.ready.then(() => {
// Convert the secret and key to a Uint8Array.
let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)
let binsec = sodium.from_string(secret)
// Encrypt the secret using libsodium
let encBytes = sodium.crypto_box_seal(binsec, binkey)
// Convert the encrypted Uint8Array to Base64
let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)
// Print the output
console.log(output)
});
Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Python
Wenn Sie Python 3 verwenden, können Sie Ihr Geheimnis mithilfe der PyNaCl-Bibliothek verschlüsseln. Weitere Informationen finden Sie unter PyNaCl.
Im folgenden Beispiel ersetzen Sie YOUR_SECRET durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie YOUR_BASE64_KEY durch Ihren Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.
from base64 import b64encode
from nacl import encoding, public
def encrypt(public_key: str, secret_value: str) -> str:
"""Encrypt a Unicode string using the public key."""
public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
sealed_box = public.SealedBox(public_key)
encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
return b64encode(encrypted).decode("utf-8")
encrypt("YOUR_BASE64_KEY", "YOUR_SECRET")
from base64 import b64encode
from nacl import encoding, public
def encrypt(public_key: str, secret_value: str) -> str:
"""Encrypt a Unicode string using the public key."""
public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
sealed_box = public.SealedBox(public_key)
encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
return b64encode(encrypted).decode("utf-8")
encrypt("YOUR_BASE64_KEY", "YOUR_SECRET")
Beispiel zum Verschlüsseln eines geheimen Schlüssels mit C#
Wenn Sie C# verwenden, können Sie Ihr Geheimnis mithilfe des Natrium.Core-Pakets verschlüsseln. Weitere Informationen finden Sie unter Natrium.Core.
Im folgenden Beispiel ersetzen Sie YOUR_SECRET durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie YOUR_BASE64_KEY mit Ihrem Base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.
var secretValue = System.Text.Encoding.UTF8.GetBytes("YOUR_SECRET");
var publicKey = Convert.FromBase64String("YOUR_BASE64_KEY");
var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
var secretValue = System.Text.Encoding.UTF8.GetBytes("YOUR_SECRET");
var publicKey = Convert.FromBase64String("YOUR_BASE64_KEY");
var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
Beispiel zum Verschlüsseln eines geheimen Schlüssels mithilfe von Ruby
Wenn Sie Ruby verwenden, können Sie Ihr Geheimnis mit dem RbNaCl-Juwel verschlüsseln. Weitere Informationen finden Sie unter RbNaCl.
Ersetzen Sie im folgenden Beispiel YOUR_SECRET durch den Klartextwert, den Sie verschlüsseln möchten. Ersetzen Sie YOUR_BASE64_KEY durch Ihren base64-codierten öffentlichen Schlüssel. Die Dokumentation für den Endpunkt, den Sie zum Erstellen eines geheimen Schlüssels verwenden, teilt Ihnen mit, welchen Endpunkt Sie verwenden können, um den öffentlichen Schlüssel abzurufen.
require "rbnacl"
require "base64"
key = Base64.decode64("YOUR_BASE64_KEY")
public_key = RbNaCl::PublicKey.new(key)
box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
encrypted_secret = box.encrypt("YOUR_SECRET")
# Print the base64 encoded secret
puts Base64.strict_encode64(encrypted_secret)
require "rbnacl"
require "base64"
key = Base64.decode64("YOUR_BASE64_KEY")
public_key = RbNaCl::PublicKey.new(key)
box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
encrypted_secret = box.encrypt("YOUR_SECRET")
# Print the base64 encoded secret
puts Base64.strict_encode64(encrypted_secret)