Méthode de cryptage du code Golang :
Cryptage et décryptage DES
bibliothèque standard crypto/des en golang Là est une implémentation de DES, mais la description de la bibliothèque golang est relativement simple. Si vous n'êtes pas familier avec les règles de cryptage de DES, il n'est pas facile d'écrire le code correspondant. Il est également facile de se tromper lors du cryptage et du chiffrement. décryptage entre différentes langues avec un tiers , une erreur s'est produite.
Golang fournit le mode CBC par défaut, donc pour le mode ECB, vous devez écrire votre propre codePKCS5Padding et 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)] }
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:] } ... }
Chiffrement et décryptage RSA
Différent des autres langages qui ont une encapsulation plus avancée par défaut, golang doit être combiné et encapsulé selon différents conceptsPEM : se termine généralement par .pem. Les fichiers sont couramment utilisés dans les systèmes de stockage de clés et de certificats X.509. Voici le format PEM sous un certificat X509 :-----BEGIN CERTIFICATE----- base64 -----END CERTIFICATE-----
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
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) ...
tutoriel golang.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!