Heim > Artikel > Backend-Entwicklung > Kann Golang-Code verschlüsselt werden?
Golang-Code-Verschlüsselungsmethode:
DES-Verschlüsselung und -Entschlüsselung
Standardbibliothek crypto/des in Golang Dort ist eine Implementierung von DES, aber die Beschreibung der Golang-Bibliothek ist relativ einfach. Wenn Sie mit den Verschlüsselungsregeln von DES nicht vertraut sind, ist es nicht einfach, den entsprechenden Code zu schreiben Bei der Entschlüsselung zwischen verschiedenen Sprachen mit einem Drittanbieter ist ein Fehler aufgetreten.
Golang bietet standardmäßig den CBC-Modus, daher müssen Sie für den ECB-Modus Ihren eigenen Code schreibenPKCS5Padding und PKCS5Unpadding
func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...) } func PKCS5Unpadding(origData []byte) []byte { length := len(origData) unpadding := int(origData[length-1]) return origData[:(length - unpadding)] }ECB-Verschlüsselungsmodus
block, err := des.NewCipher(key) if err != nil { ... } bs := block.BlockSize() src = PKCS5Padding(src, bs) if len(src)%bs != 0 { .... } out := make([]byte, len(src)) dst := out for len(src) > 0 { block.Encrypt(dst, src[:bs]) src = src[bs:] dst = dst[bs:] } ... }
RSA-Verschlüsselung und -Entschlüsselung
Im Gegensatz zu anderen Sprachen, die standardmäßig über eine Kapselung auf höherer Ebene verfügen, muss Golang nach unterschiedlichen Konzepten kombiniert und gekapselt werdenPEM: endet normalerweise mit .pem. Dateien werden häufig in Schlüsselspeicher- und X.509-Zertifikatsystemen verwendet. Das Folgende ist das PEM-Format unter einem X509-Zertifikat:-----BEGIN CERTIFICATE----- base64 -----END CERTIFICATE-----PKCS: Dies ist ein riesiges System, und Verschiedene Schlüssel verwenden unterschiedliche PKCS-Dateiformate. Der private Schlüssel verwendet beispielsweise pkcs8. X.509: Hierbei handelt es sich um eine Public-Key-Infrastruktur (PKI), die normalerweise PKIX in der IETF entspricht. Hinweis: Die mit openssl generierte PEM-Datei (z. B. openssl genrsa -out rsa_private_key.pem 1024) entspricht dem PEM-Format mit -----BEGIN RSA PRIVATE KEY-- ---Anfang, -----ENDE RSA PRIVATE KEY-----Ende. kann auch in pkcs8 konvertiert werden:
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocryptNachdem die oben genannten Konzepte und Formate geklärt wurden, ist es relativ einfach, die Verschlüsselungs- und Entschlüsselungsmethoden für öffentliche Schlüssel und private Schlüssel zu schreiben, die Golang entsprechen besteht darin, die PEM-Datei zu dekodieren, dann das entsprechende Passwort in eine von Golang unterstützte Struktur zu dekodieren und dann die entsprechende Verarbeitung durchzuführen. Für den privaten Schlüssel können Sie die folgenden Vorgänge zum Signieren ausführen:
block, _ := pem.Decode([]byte(key)) if block == nil { // 失败情况 .... } private, err := x509.ParsePKCS8PrivateKey(block.Bytes) if err != nil { ... } h := crypto.Hash.New(crypto.SHA1) h.Write(data) hashed := h.Sum(nil) // 进行rsa加密签名 signedData, err := rsa.SignPKCS1v15(rand.Reader, private.(*rsa.PrivateKey), crypto.SHA1, hashed) ...Für weitere Golang-Kenntnisse beachten Sie bitte die Spalte
Golang-Tutorial.
Das obige ist der detaillierte Inhalt vonKann Golang-Code verschlüsselt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!