アプリケーションコード開発計画
1 シナリオ要件
ISV がアクセス プランと暗号化プランを大まかに確認したら、開発に入ります。ステージ。まず最新の TOP SDK をダウンロードする必要があります。以下はコード開発の入門であり、3 つの部分に分かれています。最初に SDK の API が紹介され、2 番目の部分でコード開発の仕様が説明され、最後にさまざまなシナリオでのいくつかのコード デモがリストされます。
パフォーマンスと安定性のため、必ずコード仕様に従ってください。
2 プランの紹介
# #2.1 API概要
##関数 | #パラメータ | ##SecurityClient (コンストラクター) |
初期化 | ##securityClient.encrypt | |
#データはバッチで転送し、バッチで返すことができます | # securityClient .encryptPrevious | 以前のバージョンのキーでデータを自動的に暗号化します (キー変更の移行中に使用される可能性があります) |
バッチで転送できます Enterデータを取得してバッチで返す | securityClient.decrypt | 暗号文のバージョンを自動的に決定し、対応するバージョンで復号化しますキー データ |
バッチでインポートしてバッチで返すことができます | securityClient.isEncrypt |
|
| securityClient.search | 指定された文字列に対するあいまいクエリを生成 |
| 初期化: ## SecurityClient SecurityClient = new SecurityClient(new DefaultTaabaoClient(serverUrl, appkey, appSecret), randomNumber) 注 1:defaultTaabaoClient で使用されるサーバー URL は https プロトコルである必要があります
暗号化: securityClient.encrypt(“13888883333”, type, sessionKey)
暗号文判定: SecurityClient.isEncrypt(“13888883333”, type)
以前のバージョンのキー暗号化: ##securityClient.encryptPrevious(“13888883333”, type, sessionKey)
##復号化: ##securityClient.decrypt(“~CKoqAl2hWzh54uBFv9Suug==~1~”, type, sessionKey)
あいまい検索句: String searchIndex = securityClient.search( “3333”, type, sessionKey) #SELECT * FROM table_orders WHERE Telephone LIKE #searchIndex#% ( この例は携帯電話番号です他の例については、以下のシーンの詳細を参照してください) 2.2 暗号化呼び出し仕様:1) すべてメインアカウントのセッションキーを使用します。サブアカウントには権限がない可能性があります#2) 呼び出す前にセッションキーを事前に判断してください3) 認証は有効期限付きのセッションキーを返します 4) セッション キーの有効期限が 90 日を超えているかどうかを確認します。有効期限が 90 日を超えている場合は、暗号化または復号化を呼び出す必要はありません (再認証するまでは成功しません。リソースの無駄です) クライアント側にエラーがあると仮定すると、実際の暗号化と復号化の呼び出しで例外がスローされる可能性があります。次の解決策を使用できます: #try { // 暗号化操作と復号化操作 # } catch (SecretException e) { if(ErrorUtil.isInvalidSession(e)) { // セッションキーを無効としてマークします。 -authorization } } #1) 初期化: #SecurityClient securityClient = 新しい SecurityClient (新しい DefaultTaabaoClient(serverUrl, appkey, appSecret), Random Number); defaultTaabaoClient のサーバー URL は https プロトコルである必要があります。現在は (サンドボックス環境: https://gw.api.tbsandbox.com/router/rest) #2) 暗号化と復号化: receiver_mobile 暗号化フィールドのタイプ (タイプ) は次のとおりです。電話。その他の暗号化フィールド タイプ (タイプ) はフィールド クエリ方式に基づいています。通常の暗号化方式のフィールド タイプ (タイプ) は単純で、あいまいクエリのフィールド タイプ (タイプ) は検索です。 暗号化と復号化 入力パラメータは sessionkey をもたらす必要があります 出力結果: 携帯電話番号の平文: 13834566786 -> 暗号化文: $138$SuR h6AtlSj8Z59W2W9EQ==$103$ 携帯電話番号の暗号化文: $138$SuR h6AtlSj8Z59W2W9EQ ==$103$ ->クリアテキスト: 13834566786 =========================== =TOP====== ================= ## ニックネーム平文: taabaoTEST -> 暗号文: ~CKoqAl2hWzh54uBFv9Suug= =~103~ ニックネーム暗号文: ~CKoqAl2hWzh54uBFv9Suug==~103~ -> 平文: taovaoTEST #3) バッチ暗号化と復号化 :#携帯電話番号 平文: 15923847823 - > 暗号化テキスト: $159$AtyBFui4xvl92WV7GKwfBw ==$103$ 携帯電話番号平文: 13834566786 -> プライベートテキスト: $138$SuR h6AtlSj8Z59W2W9EQ==$103$ 携帯電話番号の暗号文 テキスト: $138$SuR h6AtlSj8Z59W2W9EQ==$103$ -> プレーンテキスト: 13834566786 # 携帯電話番号の暗号文: $159$AtyBFui4xvl92WV7GKwfBw= =$103$ -> プレーンテキスト: 15923847823 ===========================TOP ================== ========= nick 平文: taobaoTEST2 -> 暗号文: ~nID/f9qCBqgm7MXZSXBpfA==~103~ nick 平文: taabaoTEST1 -> 暗号文: ~kgRCprD8gH2KuZ3dPoVuqg==~103~ nick 暗号文: ~nID/f9qCBqgm7MXZSXBpfA==~103~ -> 平文: taabaoTEST2 nick 暗号文: ~kgRCprD8gH2KuZ3dPoVuqg==~103~ -> 平文:淘宝TEST1 4) 通常の暗号化シナリオ: シナリオ 1: が SQL ステートメントの where 句に現れません。復号化して表示または印刷するデータを直接取得します: String cipher = ReadFromDataBase(); // SELECT cipher FROM table... # String Phone = securityClient.decrypt(cipher, “phone”, sessionKey); シナリオ 2: 必要フィールドは SQL 検索条件として where 句 (key = “value”) に挿入されます。 String cipher = securityClient.encrypt(p, “phone”, sessionKey); # SELECT * From Table where Phone = #cipher 暗号文への切り替えの過程で、平文が混在する可能性があります。テキストと暗号文、一時的な状態。これには互換性のための準備が必要です: SELECT * FROM table WHERE Phone in (#cipher#, #p#) #5) ファジー クエリ暗号化シナリオのサポート (携帯電話番号以外のフィールド): シナリオ 1: 携帯電話番号以外のフィールドのファジー クエリのサンプル コード: //ファジークエリを必要とするフラグメント 文字列部分 = "cdefg"; シナリオ 2:電話ファジー クエリ トップ 3 サンプル コード: //ファジークエリを必要とするフラグメント ## // データベースに移動してファジー クエリを実行します List<DO> オブジェクト = SELECT * FROM table WHERE nick LIKE "$" 部分 "%" ## シナリオ 3 : 電話のファジー クエリサンプルコードの最後の 4 桁: (プレフィックスインデックスが使用されます) //ファジークエリを必要とするフラグメント String constant = "5383"; //あいまいクエリの暗号文を取得します |