|
|
|
|
暗号強度 | 公開鍵暗号 RSA暗号方式 鍵ビット長 | 公開鍵暗号 ECDSA暗号方式 (楕円曲線暗号) 鍵ビット長 | 共通鍵暗号 AES暗号方式 鍵ビット長 | SHAハッシュ関数 | HMAC 暗号ハッシュ関数 | 2030年末まで | 2031年以降 |
80以下 (112未満) | 1024 | 160 | 2TDEA | SHA-1 | -- | × Legacy use | × Legacy use |
112 | 2048 | 224 | 3TDEA | SHA-224、SHA-512/224 | -- | ○ | × Legacy use |
128 | 3072 | 256 | AES-128 | SHA-256、SHA-512/256 | SHA-1 | ○ | ○ |
192 | 7680 | 384 | AES-192 | SHA-384 | SHA-224、SHA-512/224 | ○ | ○ |
256 | 15360 | 512 | AES-256 | SHA-512 | SHA-256、SHA-512/256 | ○ | ○ |
RSA暗号方式 鍵ビット長 | 利用期限 | 特定用途での延長 |
1408-bit | 2024年末まで | 2025年末まで |
1984-bit | 2029年末まで | -- |
使い方 | 目的 | 暗号化 | 復号化 | 補足 |
その1 | メッセージの秘匿送信 | 「受信者」の「公開鍵」 | 「受信者」の「秘密鍵」 | 受信者以外は暗号化メッセージを解読できない |
その2 | 自分である事の認証・証明 | 「送信者」の「秘密鍵」 | 「送信者」の「公開鍵」 | 送信者以外は暗号化メッセージを作れない |
![]() ゴルゴ13 (Volume108) 最終暗号 (SPコミックスコンパクト) (日本語) コミック - 2007/9/28 ASIN: 4845830612 |
![]() ゴルゴ13 (129) (SPコミックス) (日本語) コミック - 2003/7/5 ASIN: 4845801299 |
![]() ゴルゴ13 THE LAST CODE〜最終暗号〜 (My first big) (日本語) ムック - 2015/8/7 ASIN: 4091198481 |
![]() 暗号解読(上) (新潮文庫) (日本語) 文庫 - 2007/6/28 ASIN: 410215972X |
func GenerateKey(random io.Reader, bits int) (*PrivateKey, error) func (priv *PrivateKey) Public() crypto.PublicKey func EncryptPKCS1v15(rand io.Reader, pub *PublicKey, msg []byte) ([]byte, error) func DecryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) ([]byte, error)
func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte func MarshalPKCS1PublicKey(key *rsa.PublicKey) []byte func MarshalPKCS8PrivateKey(key interface{}) ([]byte, error) func ParsePKCS1PrivateKey(der []byte) (*rsa.PrivateKey, error) func ParsePKCS1PublicKey(der []byte) (*rsa.PublicKey, error) func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error)
func Decode(data []byte) (p *Block, rest []byte)
● GO言語のサンプルプログラムの実行方法 go run rsa_test.go
package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "io/ioutil" "fmt" "os" ) func main() { // Generate RSA Keys privateKey, _ := rsa.GenerateKey(rand.Reader, 2048) // Save PrivateKey to Der file { derPrivateKey := x509.MarshalPKCS1PrivateKey(privateKey) f, _ := os.Create("go_PrivateKey.der") _, _ = f.Write(derPrivateKey) _ = f.Close() } publicKey := &privateKey.PublicKey // Save PublicKey to Der file { derPublicKey := x509.MarshalPKCS1PublicKey(publicKey) f, _ := os.Create("go_PublicKey.der") _, _ = f.Write(derPublicKey) _ = f.Close() } fmt.Println("Private Key : ", privateKey) fmt.Println("Public key ", publicKey) // Encrypt Message message := []byte("ABCDEF GO language RSA test") ciphertext, _ := rsa.EncryptPKCS1v15(rand.Reader, publicKey, message) fmt.Printf("Encrypted [%s] to \n[%x]\n", string(message), ciphertext) fmt.Println() // Save Encrypt Message // opensslコマンドで秘密鍵で復号化する //$ openssl rsautl -decrypt -inkey go_PrivateKey.der -keyform DER -in go_ciphertext.dat -out go_decode_test_data.txt //$ cat go_decode_test_data.txt { f, _ := os.Create("go_ciphertext.dat") _, _ = f.Write(ciphertext) _ = f.Close() } // Decrypt Message plainText, _ := rsa.DecryptPKCS1v15(rand.Reader, privateKey, ciphertext) fmt.Printf("Decrypted [%x] to \n[%s]\n", ciphertext, plainText) // DER形式の読み込み { bytes, _ := ioutil.ReadFile("go_PrivateKey.der") privateKey, _ = x509.ParsePKCS1PrivateKey(bytes) } /* // -----BEGIN RSA PRIVATE KEY----- { bytes, _ := ioutil.ReadFile("privKey.pem") decodeBlock, _ := pem.Decode(bytes) privateKey, _ = x509.ParsePKCS1PrivateKey(decodeBlock.Bytes) // Precompute()は無くても動くが、Precompute()すると処理の高速化に貢献する privateKey.Precompute() } */ // -----BEGIN PRIVATE KEY----- { bytes, _ := ioutil.ReadFile("privKey.pem") decodeBlock, _ := pem.Decode(bytes) privateKeyIf, _ = x509.ParsePKCS8PrivateKey(decodeBlock.Bytes) privateKey, _ = privateKeyIf.(*rsa.PrivateKey) // Precompute()は無くても動くが、Precompute()すると処理の高速化に貢献する privateKey.Precompute() } { ciphertext, _ := ioutil.ReadFile("test_data.enc") plainText, _ = rsa.DecryptPKCS1v15(rand.Reader, privateKey, ciphertext) fmt.Printf("from PHP Decrypted [%x] to \n[%s]\n", ciphertext, plainText) } }
$ go run rsa_test.go Private Key : &{{25402711108532565594924188408254858835517891951501728002523800214932910750205385638316126308267838701452290484429595428323766728202073004795565815255676977426589655964728750486246878189308882394028391947140848058495213613123393525382936457665252816227276156088976924512076484545001827438193463899430659837235201403162310666327561287561267640029270797034642261236190049748188939136601491214221024059062628539333308501640856446656520359592235408493265246713851878700387592080872982438664378760230280679846903107491806137408767240942239152480312023507044683958938953713070611013436199605389870957519318344150481402464809 65537} 3400103481148781076318338964511827238127514964044328517297691006384050125895320854163435310986549294126058442245089203003739593508835991852948766825194904343898018861446215103916224658995949102955842564663007448755970120913658055825855907451357213542665462886804485738131664898130155946836642893721191816717646237291383425472877123759256738445855276896433552551227609270868492936387735420689121184466256278615678685564618476874286184652265043527368382267859507988593128048521731024956437665239703489818456485151274443939674536547650697783593197965398650136671879326588263832792962931890031522095578254011357167993153 [147062990817507924101430840751270599135095101051128268614796449752356226956486948321980669803790096546237528179906914084805784084839205623525401494737088836629412394568671208636678096676333601226121913737090657644966665334021602166728908377482551280565427712890880159608972771430202252880248024644120963845461 172733540691111525216803846552750241123243889636990976033549150590205621450405968395288821729764373973147807039563176106815614773755738021000484903484537350257514739203457812042058248276422271024773137740229247151574161823062080563999506481781542846286777775531412704060650036504470817774283266024564415048069] {134180365273413550049119711820238594166381535048190578605831339691958633246717023389248151907890697057827169919979764630896236708073990867209742706857179365474347979700448046014294268411096693759512732560585210866204231507593507837736268143795819710586238544944429406655448614377227732627787522798111862827153 109643640886068014236523490800531150811403418052379947251104638060218713891952458691182308985125928212810302162836689595854701536357152473772375482322302726257116028363578512610428050235731975443345934815349141424012163080998253680552656814350858025322031149764358583531791835430153745508799363208903057295873 95933012435222677309864798163991361842549023735686818404474231985834848471879723612846700078695209183289090680252414722170166161366085349777787390356306973389362117205784589848673873817540908469507023570129381576252750781013455650833268803331746174918620751226420135247674953168053720727757807593581185391245 []}} Public key &{25402711108532565594924188408254858835517891951501728002523800214932910750205385638316126308267838701452290484429595428323766728202073004795565815255676977426589655964728750486246878189308882394028391947140848058495213613123393525382936457665252816227276156088976924512076484545001827438193463899430659837235201403162310666327561287561267640029270797034642261236190049748188939136601491214221024059062628539333308501640856446656520359592235408493265246713851878700387592080872982438664378760230280679846903107491806137408767240942239152480312023507044683958938953713070611013436199605389870957519318344150481402464809 65537} Encrypted [ABCDEF GO language RSA test] to [7f966971c953750cffbb66eb2bec2ef0d99f404c966fb61c2b39021364026a26c8988439fc8c01c1b5be1412d8c56f0add4f3b92b1e00f4b11359d8e291bac668e6909e4678db553b04e640d1a42b3f700259c263b9cbe55b9552d51de6bb713a0cbdcf176c63723b3d7f24399b3d2377a46b9e5aadb228af81db56c074ef74126b1f0b05124ea229bb169df66a486d03ff910b70ae9b9a2eeec1efc90984fe3090645f57b1ef879a3b2b2596520aed582a0e277aa93c63dc370fcc4bc5f2c46f12705b79624fbfb006b0e4dea0cba6073522fa6b5a3999bb21ce0d2166a21911e7544b8acb5c1b76e199b1861df0dd9dae81e8c42bdfcb4e064155f198f5103] Decrypted [7f966971c953750cffbb66eb2bec2ef0d99f404c966fb61c2b39021364026a26c8988439fc8c01c1b5be1412d8c56f0add4f3b92b1e00f4b11359d8e291bac668e6909e4678db553b04e640d1a42b3f700259c263b9cbe55b9552d51de6bb713a0cbdcf176c63723b3d7f24399b3d2377a46b9e5aadb228af81db56c074ef74126b1f0b05124ea229bb169df66a486d03ff910b70ae9b9a2eeec1efc90984fe3090645f57b1ef879a3b2b2596520aed582a0e277aa93c63dc370fcc4bc5f2c46f12705b79624fbfb006b0e4dea0cba6073522fa6b5a3999bb21ce0d2166a21911e7544b8acb5c1b76e199b1861df0dd9dae81e8c42bdfcb4e064155f198f5103] to [ABCDEF GO language RSA test] from PHP Decrypted [4fe170ffc2e0599379c2393573ccf4437244d759e5d6b121da05c48b2b421656ad38f07dccac2e8c2946e42cc2caba33376674b8fa3c186fff8cff485a909ce85e80ce78cc3e58b5d2e9cf93d36fcc8ec217da38fa0431fcb3f9c2e654add6c2877f417f5e5e030e43268238f4f1cda72f7eab735460cd5b0e661425b47a5c43] to [plaintext data goes here] $ ls -l go*.* -rw-r--r-- 1 pi pi 256 Jan 14 11:15 go_ciphertext.dat -rw-r--r-- 1 pi pi 1193 Jan 14 11:15 go_PrivateKey.der -rw-r--r-- 1 pi pi 270 Jan 14 11:15 go_PublicKey.der $ openssl rsautl -decrypt -inkey go_PrivateKey.der -keyform DER -in go_ciphertext.dat -out go_decode_test_data.txt $ cat go_decode_test_data.txt ABCDEF GO language RSA test