golang 코드 암호화 방법:
DES 암호화 및 복호화
golang의 표준 라이브러리 crypto/des에는 DES가 구현되어 있지만 golang 라이브러리에 대한 설명은 익숙하지 않은 경우 비교적 간단합니다. DES의 암호화 규칙으로는 그렇습니다. 해당 코드를 작성하는 것이 쉽지 않으며, 제3자와 다른 언어로 암호화 및 복호화를 수행할 때 혼동을 일으키고 오류가 발생하기 쉽습니다.
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:] } ... }
RSA 암호화 및 복호화
기본적으로 고급 패키징을 사용하는 다른 언어와 달리 golang은 다른 개념에 따라 결합하고 패키징해야 합니다. PEM: 일반적으로 키 저장소 및 X.509 인증서 시스템에서 일반적으로 사용되는 .pem으로 끝나는 파일입니다. 다음은 X509 인증서의 PEM 형식입니다.-----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) ...
golang 튜토리얼 열을 주의하세요.
위 내용은 golang 코드를 암호화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!