<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # SqlMap配置文件及SqlTemplate模板加密存儲及解析 出于系統信息安全的原因,一些大公司有自己的信息安全規范。其中就有類似這樣的配置文件不允許明文存儲的需求,本orm定制版本也內置了一些API對SqlMap配置文件及SqlTemplate模板密文存儲解析的需求進行支持。 * 本庫內置提供了AES,DES,3DES,RSA四種加密算法支持SqlMap配置文件及SqlTemplate模板加解密存儲解析功能。其中,AES,DES,3DES和標準實現略有不同,如不提供key,本庫會提供了一個內置key,當然您也可以設置自己的key。RSA支持公鑰加密私鑰解密和私鑰加密公鑰解密兩種模式。 ~~~ //內置4種加密算法如下 type AesEncrypt struct { PubKey string } type DesEncrypt struct { PubKey string } type TripleDesEncrypt struct { PubKey string } //RSA加密解密算法支持公鑰加密私鑰解密和私鑰加密公鑰解密兩種模式,請合理設置DecryptMode type RsaEncrypt struct { PubKey string PriKey string pubkey *rsa.PublicKey prikey *rsa.PrivateKey EncryptMode int DecryptMode int } const ( RSA_PUBKEY_ENCRYPT_MODE = iota //RSA公鑰加密 RSA_PUBKEY_DECRYPT_MODE //RSA公鑰解密 RSA_PRIKEY_ENCRYPT_MODE //RSA私鑰加密 RSA_PRIKEY_DECRYPT_MODE //RSA私鑰解密 ) ~~~ * 除以上4種內置加解密算法外,本庫也支持自定義加解密算法功能,您也可以使用自己實現的加密解密算法,只需要實現Cipher接口即可。 ~~~ //如需使用自定義的加密解密算法,只需實現Cipher接口即可 type Cipher interface { Encrypt(strMsg string) ([]byte, error) Decrypt(src []byte) (decrypted []byte, err error) } //SqlMapOptions中的Cipher實現了加密和解密方法 type SqlMapOptions struct { Capacity uint Extension string Cipher Cipher } //SqlTemplateOptions中的Cipher實現了加密和解密方法 type SqlTemplateOptions struct { Capacity uint Extension string Cipher Cipher } ~~~ * 本庫還提供一個批量配置文件加密工具,采用sciter的Golang綁定庫實現。工具傳送門:[xorm tools](https://github.com/xormplus/tools)。 * 內存中緩存的是經指定解密算法解密之后的配置文件內容或模板內容。 * SqlMap配置文件及SqlTemplate模板加密存儲及解析具體示例如下: ~~~ //如需使用自定義的加密解密算法,只需實現Cipher接口即可 type Cipher interface { Encrypt(strMsg string) ([]byte, error) Decrypt(src []byte) (decrypted []byte, err error) } //SqlMapOptions中的Cipher實現了加密和解密方法 type SqlMapOptions struct { Capacity uint Extension string Cipher Cipher } //SqlTemplateOptions中的Cipher實現了加密和解密方法 type SqlTemplateOptions struct { Capacity uint Extension string Cipher Cipher } //如現在我們已經使用3DES加密了SqlMap配置文件和SqlTemplate模板,則xorm初始化方式如下 var err error engine, err = xorm.NewPostgreSQL("postgres://postgres:root@localhost:5432/mblog?sslmode=disable") if err != nil { t.Fatal(err) } enc := &xorm.AesEncrypt{ PubKey: "122334", } //如自定義加解密算法,則此處傳入的enc為自己實現的加解密算法,后續代碼與本示例一致 err = x.RegisterSqlMap(xorm.Xml("./sql/aes", ".xml"), enc) if err != nil { t.Fatal(err) } //這里也可以new其他加密解密算法,SqlMap配置文件和SqlTemplate模板的加密結算算法可不相同 err = x.RegisterSqlTemplate(xorm.Pongo2("./sql/aes", ".stpl"), enc) if err != nil { t.Fatal(err) } //內置4種加密算法如下 type AesEncrypt struct { PubKey string } type DesEncrypt struct { PubKey string } type TripleDesEncrypt struct { PubKey string } //RSA加密解密算法支持公鑰加密私鑰解密和私鑰加密公鑰解密兩種模式,請合理設置DecryptMode type RsaEncrypt struct { PubKey string PriKey string pubkey *rsa.PublicKey prikey *rsa.PrivateKey EncryptMode int DecryptMode int } const ( RSA_PUBKEY_ENCRYPT_MODE = iota //RSA公鑰加密 RSA_PUBKEY_DECRYPT_MODE //RSA公鑰解密 RSA_PRIKEY_ENCRYPT_MODE //RSA私鑰加密 RSA_PRIKEY_DECRYPT_MODE //RSA私鑰解密 ) //RSA使用示例 pukeyStr := `-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyqyVCWQBeIgY4FyLnrA1 viOq9m++OyUwXIvpEH7zN7MjeJp7nSK5PBkvv81zIbQrMQXQzTuE52QjYfMfHVoq FyK+Qxw+B/1qY3TACj8b4TlDS0IrII9u1QBRhGHmtmqJ5c6As/rIqYLQCdbmycC0 3iKBM8990Pff8uq+jqzsoQCFDexZClprR6Vbz3S1ejoFLuDUAXUfNrsudQ/7it3s Vn540kh4a9MKeSOg68TSmKKQe1huTF03uDAdPuDveFpVU/l7nETH8mFoW06QvvJR 6Dh6FC9LzJA6EOK4fNGeDzJg9e2jByng/ubJM6WeU29uri2zwnMGQ3qsCuGMXBS/ yQIDAQAB -----END PUBLIC KEY-----` var err error engine, err = xorm.NewPostgreSQL("postgres://postgres:root@localhost:5432/mblog?sslmode=disable") if err != nil { t.Fatal(err) } //公鑰解密 enc := new(xorm.RsaEncrypt) enc.PubKey = pukeyStr enc.DecryptMode = xorm.RSA_PUBKEY_DECRYPT_MODE err = engine.RegisterSqlMap(xorm.Xml("./sql/rsa", ".xml"), enc) if err != nil { t.Fatal(err) } err = engine.RegisterSqlTemplate(xorm.Pongo2("./sql/rsa", ".stpl"), enc) if err != nil { t.Fatal(err) } ~~~ * 其他相關API ~~~ /*---------------------------------------------------------------------------------------------------- 1.ClearSqlMapCipher()可清除SqlMap中設置的Cipher,這樣可以使用engine.LoadSqlMap(filepath)手工加載一些沒有加密的配置文件 2.如果您之后又想加載一些其他加密算法存儲的配置文件,也可以先清除,再重新SetSqlMapCipher()之后加載 3.當然,配置文件也可以不加密存儲,遇到需要部分加密存儲的配置文件可以手工調用SetSqlMapCipher()之后加載 4.注意InitSqlMap()是對整個SqlMapRootDir做統一操作,如您有區別對待的配置文件,請自行設置隔離目錄,使用ClearSqlMapCipher()或SetSqlMapCipher()后調用LoadSqlMap()方法進行指定處理。 ----------------------------------------------------------------------------------------------------*/ engine.ClearSqlMapCipher() engine.SetSqlMapCipher(cipher) /*---------------------------------------------------------------------------------------------------- 1.ClearSqlTemplateCipher()可清除SqlTemplate中設置的Cipher,這樣可以使用engine.LoadSqlTemplate(filepath)手工加載一些沒有加密的模板文件 2.如果您之后又想加載一些其他加密算法存儲的模板文件,也可以先清除,再重新SetSqlTemplateCipher()之后加載 3.當然,配置文件也可以不加密存儲,遇到需要部分加密存儲的配置文件可以手工調用SetSqlTemplateCipher()之后加載 4.注意InitSqlMap()是對整個SqlTemplateRootDir做統一操作,如您有區別對待的配置文件,請自行設置隔離目錄,使用ClearSqlTemplateCipher()或SetSqlTemplateCipher()后調用LoadSqlTemplate()方法進行指定處理。 ----------------------------------------------------------------------------------------------------*/ engine.ClearSqlTemplateCipher() engine.SetSqlTemplateCipher(cipher) ~~~
                  <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>

                              哎呀哎呀视频在线观看