Golang コード暗号化方式:
DES 暗号化と復号化
Golang の標準ライブラリは crypto にあります/des DES の実装はありますが、golang ライブラリの記述は比較的単純です。DES の暗号化ルールに慣れていないと、対応するコードを書くのは簡単ではありません。また、次の場合に混乱しやすいです。異なる言語間での暗号化・復号化を第三者機関で行っているため、エラーが発生しました。
Golang はデフォルトで CBC モードを提供するため、ECB モードの場合は独自のコードを記述する必要がありますPKCS5Padding および 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:] } ... }
#デフォルトで高レベルのカプセル化を持つ他の言語とは異なり、golang はさまざまな概念に基づいて組み合わせてカプセル化する必要があります
PEM: 通常は .pem で終わります ファイルはキー ストレージと X.509 証明書システムでよく使用されます。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 中国語 Web サイトの他の関連記事を参照してください。