2016-05-19 26 views
3

golangでパスフレーズを使用してrsa秘密鍵を作成するにはどうすればよいですか?ゴランでは、私は新しいです。私は、暗号パッケージのドキュメントを読んでいます。答えは見つかりません。 ありがとう!golangでパスフレーズ付きのrsa秘密鍵を作成するには

+1

https://golang.org/pkg/crypto/rsa/#GenerateKey – nemo

答えて

9

まず、秘密鍵を生成します。 2番目の手順では、PEM形式に変換します。第3ステップで、PEMを暗号化します。

すべては、非常に完璧なGolangの標準ライブラリを使用して行うことができます。コードは何も難しいものではないので、私はここに入れます。使用する関数を知るだけです。

import (
    "crypto/rand" 
    "crypto/rsa" 
    "crypto/x509" 
    "encoding/pem" 
) 

func PrivateKeyToEncryptedPEM(bits int, pwd string) ([]byte, error) { 
    // Generate the key of length bits 
    key, err := rsa.GenerateKey(rand.Reader, bits) 
    if err != nil { 
     return nil, err 
    } 

    // Convert it to pem 
    block := &pem.Block{ 
     Type: "RSA PRIVATE KEY", 
     Bytes: x509.MarshalPKCS1PrivateKey(key), 
    } 

    // Encrypt the pem 
    if pwd != "" { 
     block, err = x509.EncryptPEMBlock(rand.Reader, block.Type, block.Bytes, []byte(pwd), x509.PEMCipherAES256) 
     if err != nil { 
      return nil, err 
     } 
    } 

    return pem.EncodeToMemory(block), nil 
} 
+1

ありがとう!私はEncryptPEMBlockに問題がありました。言語は非常にひどく分かります。私はブロックの方法について知らない。再びありがとう、今理解されています。私の英語のための_sory_ – Miol

関連する問題