<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                鑒權前置知識:加密解密 === ### Base64編碼實現: ``` input := []byte("hello") string := base64.StdEncoding.EncodeToString(input) // 序列化 de := base64.StdEncoding.DecodeString(string) //反序列化 string(de) string := base64.URLEncoding.EncodeToString(input) // URL序列化 de := base64.URLEncoding.DecodeString(string) //URL反序列化 string(de) ``` ### RSA265 非對稱加密編碼實現 非對稱加密需要生成私鑰和公鑰 我們這里通過openssl來生成 我們現在的操作系統是ubuntu18.4 ``` apt-get update // 更新系統軟化包緩存 apt-get install openssl -y // 安裝openssl openssl genrsa -out app_private_key.pem 1024 // 生成ras256 私鑰 在當前目錄下 openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem // 生成ras256公鑰 在當前目錄下 ``` 現在我們有了ras的私鑰和公鑰了 現在我們要實現加密解密模塊 這個地方只要看懂就行 ``` /** Rsa256加密 param: origData原始數據 param: publicKey 公鑰 */ func Rsa256Encrypt(origData,publicKey[]byte) ([]byte,error) { p, _ := pem.Decode(publicKey) if p == nil { return nil,errors.New("public key error") } pub, err := x509.ParsePKIXPublicKey(p.Bytes) if err != nil{ return nil,err } key := pub.(*rsa.PublicKey) return rsa.EncryptPKCS1v15(rand.Reader,key,origData) } /** Rsa256解密 param: ciphertext 密文 param: privateKey 私鑰 */ func Rsa256Decrypt(ciphertext,privateKey []byte) ([]byte,error) { p, _ := pem.Decode(privateKey) if p == nil { return nil,errors.New("private key error") } key, e := x509.ParsePKCS1PrivateKey(p.Bytes) if e != nil { return nil,e } return rsa.DecryptPKCS1v15(rand.Reader,key,ciphertext) } ``` 現在我們新建一個測試文件來測試以下 ``` func TestRSA(t *testing.T) { bytes, e := ioutil.ReadFile("../app_public_key.pem") if e != nil { t.Fatal(e.Error()) } ordata := []byte("123456") encrypt, e := utils.Rsa256Encrypt(ordata, bytes) if e != nil { t.Fatal(e.Error()) } s := base64.URLEncoding.EncodeToString(encrypt) file, e := ioutil.ReadFile("../app_private_key.pem") if e != nil { t.Fatal(e.Error()) } decodeString, _ := base64.URLEncoding.DecodeString(s) decrypt, e := utils.Rsa256Decrypt([]byte(decodeString), file) if e != nil { t.Fatal(e.Error()) } t.Log(s) t.Log(encrypt) t.Log(string(ordata)) t.Log(string(decrypt)) } ``` 此處大家留意下我用base64把加密出來的密文再編碼了一遍,是因為加密出來有可能無法顯示
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看