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)] }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: 通常は .pem で終わります ファイルはキー ストレージと X.509 証明書システムでよく使用されます。X509 証明書の PEM 形式は次のとおりです:-----BEGIN CERTIFICATE----- base64 -----END CERTIFICATE-----PKCS: これは巨大なシステムであり、キーが異なれば、使用する pkcs ファイル形式も異なります。たとえば、秘密キーは pkcs8 を使用します。 XX.509: これは公開キー基盤 (pki) であり、通常は IETF の PKIX に対応します。 注: openssl を使用して生成された pem ファイル (openssl genrsa -out rsa_private_key.pem 1024 など) は、-----BEGIN RSA PRIVATE KEY-- を含む PEM 形式に準拠しています。 ---先頭、-----END RSA PRIVATE KEY-----終了。 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 中国語 Web サイトの他の関連記事を参照してください。