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)] }ECB 암호화 모드
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-----PKCS: 이것은 거대한 시스템입니다. 다른 키는 다른 pkcs 파일 형식을 사용합니다. 예를 들어 개인 키는 pkcs8을 사용합니다. X.509: 이는 일반적으로 IETF의 PKIX에 해당하는 공개 키 인프라(pki)입니다. 참고: openssl을 사용하여 생성된 pem 파일(예: openssl genrsa -out rsa_private_key.pem 1024)은 PEM 형식이며 -----BEGIN RSA PRIVATE KEY----, --- -로 시작합니다. -RSA 개인 키 끝-----끝. pkcs8로 변환할 수도 있습니다:
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt위의 개념과 형식을 이해한 후에는 golang에 해당하는 공개 키와 개인 키 암호화 및 복호화 방법을 작성하는 것이 비교적 쉽습니다. 먼저 pem 파일을 디코딩한 다음. 해당 비밀번호를 golang이 지원하는 구조로 디코딩한 후 그에 따라 처리합니다. 개인 키의 경우 다음 작업을 수행하여 서명할 수 있습니다.
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 튜토리얼 열을 주의하세요.
위 내용은 golang 코드를 암호화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!