gitee.com/h79/goutils@v1.22.10/common/algorithm/pkcs_test.go (about)

     1  package algorithm
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  )
     8  
     9  func TestCrypt_Decrypt(t *testing.T) {
    10  
    11  	var privKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
    12  MIICXQIBAAKBgQCVZ625ZMlW8VmhH8K7R4qtJHZRgkzi0g+JZytEVUTLQ8aQ7Wl7
    13  KZjHPnih1U8f5XBFEyn+LHsAcNvA77D/17igzLIZ5nIyfggIAOS26ie4HHEyH6Wl
    14  pMA3F1o/+k4yGok//9tvdF/OboQGo1mXpeztQrM8GU3KPJFMKOg9skk7YwIDAQAB
    15  AoGAR/45vEhQrNCH/Bgt4cjLjjsvuH8tRW8rhW5tbvQXvkreeB+u4GZe9EOqJXGA
    16  O0J4IxDk/1G3w7Kecg4OIHp2wGfzoEPTFmv3uZ+KnQZTZ9wUudsgsS5kSvjQ9kLF
    17  SPv/eD2EKC3DJWfJA1VcetDMB0WQdqZt3uMTl3qWoLBhn0ECQQCw2yHy7mhVQGrf
    18  W1xvfIULXrkY+T/HUF/YhJEaPvnC0fVCZC6Up/SLLdXCdM0tR1cAuaD+GkTObKlv
    19  4qRhmu17AkEA2EO4406oiqe5/udyqTp4bd6TfI1dNvwBbBGlPztzWMhH8YnBMuUw
    20  V+MWVcoabCPRtpysI3970ximXoFGo1ChOQJAUuUDTpiMcpkU/sgV1XOp8KBfZeM+
    21  D7AOnK/WS1UFQFmk+Y93fdoTd0DuloyktvpfP0nCuheZ9J9d88Fphw5VDQJBANPw
    22  Omb5FQ8dJJf8dlAGLzNtJxiu6SUTfslL2afIOVhOnsLE/4NDPEdFEwRsFczYpZLS
    23  o5f+PXk49QI0qucuA3ECQQCGWhNOznEoZX+4RvHj1NvjSwyvc5I4dfbhUukTfTgC
    24  5xGIOb5kJ/5IsE39Bo6rxmOLurlbP9xA5urgYvEQ/iAZ
    25  -----END RSA PRIVATE KEY-----`)
    26  
    27  	var pubKey = []byte(`-----BEGIN PUBLIC KEY-----
    28  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVZ625ZMlW8VmhH8K7R4qtJHZR
    29  gkzi0g+JZytEVUTLQ8aQ7Wl7KZjHPnih1U8f5XBFEyn+LHsAcNvA77D/17igzLIZ
    30  5nIyfggIAOS26ie4HHEyH6WlpMA3F1o/+k4yGok//9tvdF/OboQGo1mXpeztQrM8
    31  GU3KPJFMKOg9skk7YwIDAQAB
    32  -----END PUBLIC KEY-----`)
    33  
    34  	orig := "hello"
    35  
    36  	pkcs := NewPKCS1()
    37  	raw, er := pkcs.Encrypt([]byte(orig), pubKey)
    38  	if er != nil {
    39  		return
    40  	}
    41  	raw = "jD/WK7XW8JohMeEE7aBarPsZ8p/YChLaQJPzU0RPvyF2oX9zV6JlI8kMf1Jw0IbZSeNQoK+8JhNhQ9UJjFsqrbl+Nu738zURxZksaONHOeCOjnQGgxR/Wye9SBF05VAlz0x2brMLYpobftX0+CBWztsOY6g37/6OWsW44nGRx5E="
    42  	orig2, err := pkcs.Decrypt(raw, privKey)
    43  	if err != nil {
    44  		return
    45  	}
    46  	t.Log("OK: ", string(orig2))
    47  }
    48  
    49  func TestNewPKCS(t *testing.T) {
    50  	const key = "1r1tE7lZDHgKHK5A"
    51  	pkc7 := NewPKCS7()
    52  	xx, _ := pkc7.Encrypt([]byte("13234567890"), []byte(key))
    53  	t.Log(xx)
    54  	mobile, _ := pkc7.Decrypt("b9gAYgUCMkTQg+9v3Wb+NlVoHGksCaJM/Hz+brt+UvE=", []byte(key))
    55  	t.Log(string(mobile))
    56  }
    57  
    58  func TestSignWithSha1(t *testing.T) {
    59  	noncestr := "Wm3WZYTPz0wzccnW"
    60  	jsapi_ticket := "sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg"
    61  	timestamp := "1414587457"
    62  	url := "http://mp.weixin.qq.com?params=value"
    63  
    64  	noncestr = fmt.Sprintf("noncestr=%v", noncestr)
    65  	timestamp = fmt.Sprintf("timestamp=%v", timestamp)
    66  	jsapi_ticket = fmt.Sprintf("jsapi_ticket=%v", jsapi_ticket)
    67  	url = fmt.Sprintf("url=%v", url)
    68  
    69  	sign, _ := SignWithSha1("&", noncestr, jsapi_ticket, timestamp, url)
    70  	t.Log("sign: ", sign)
    71  
    72  }
    73  
    74  func TestPKCS1_Generate(t *testing.T) {
    75  	pkcs := NewPKCS1()
    76  
    77  	pubKey := &bytes.Buffer{}
    78  	priKey := &bytes.Buffer{}
    79  	out := &RsaKey{
    80  		Pub: pubKey,
    81  		Pri: priKey,
    82  	}
    83  	err := pkcs.Generate(2048, out)
    84  	if err != nil {
    85  		return
    86  	}
    87  	orig := "hello"
    88  	raw, er := pkcs.Encrypt([]byte(orig), pubKey.Bytes())
    89  	if er != nil {
    90  		return
    91  	}
    92  	orig2, err := pkcs.Decrypt(raw, priKey.Bytes())
    93  	if err != nil {
    94  		return
    95  	}
    96  	t.Log("OK: ", string(orig2))
    97  }