アプリケーションコード開発計画


1 シナリオ要件

ISV がアクセス プランと暗号化プランを大まかに確認したら、開発に入ります。ステージ。まず最新の TOP SDK をダウンロードする必要があります。以下はコード開発の入門であり、3 つの部分に分かれています。最初に SDK の API が紹介され、2 番目の部分でコード開発の仕様が説明され、最後にさまざまなシナリオでのいくつかのコード デモがリストされます。

パフォーマンスと安定性のため、必ずコード仕様に従ってください。

2 プランの紹介

# #2.1 API概要

##関数最新バージョンのキーを使用してデータを自動的に暗号化します# securityClient .encryptPrevious以前のバージョンのキーでデータを自動的に暗号化します (キー変更の移行中に使用される可能性があります)securityClient.decrypt 暗号文のバージョンを自動的に決定し、対応するバージョンで復号化しますキー データsecurityClient.isEncryptsecurityClient.search指定された文字列に対するあいまいクエリを生成

#パラメータ

##SecurityClient (コンストラクター)
初期化

##securityClient.encrypt

#データはバッチで転送し、バッチで返すことができます

バッチで転送できます Enterデータを取得してバッチで返す

バッチでインポートしてバッチで返すことができます

初期化:

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

}

}

2.3 を呼び出さないでください。 コード シナリオの例:

#1) 初期化: #SecurityClient securityClient

= 新しい SecurityClient (新しい DefaultTaabaoClient(serverUrl, appkey, appSecret), Random Number);

defaultTaabaoClient のサーバー URL は https プロトコルである必要があります。現在は

https://eco.taobao.com/router/rest

(サンドボックス環境: https://gw.api.tbsandbox.com/router/rest)

#2) 暗号化と復号化:

receiver_mobile 暗号化フィールドのタイプ (タイプ) は次のとおりです。電話。その他の暗号化フィールド タイプ (タイプ) はフィールド クエリ方式に基づいています。通常の暗号化方式のフィールド タイプ (タイプ) は単純で、あいまいクエリのフィールド タイプ (タイプ) は検索です。

暗号化と復号化 入力パラメータは sessionkey をもたらす必要があります

LB1OXJaPXXXXXbvXFXXXXXXXXXX.png出力結果:

携帯電話番号の平文: 13834566786 -> 暗号化文: $138$SuR h6AtlSj8Z59W2W9EQ==$103$

携帯電話番号の暗号化文: $138$SuR h6AtlSj8Z59W2W9EQ ==$103$ ->クリアテキスト: 13834566786

=========================== =TOP====== =================

## ニックネーム平文: taabaoTEST -> 暗号文: ~CKoqAl2hWzh54uBFv9Suug= =~103~

ニックネーム暗号文: ~CKoqAl2hWzh54uBFv9Suug==~103~ -> 平文: taovaoTEST

#3) バッチ暗号化と復号化

LB1o4ALOVXXXXbKaFXXXXXXXXXX.png

LB1NX8hPXXXXXcjXpXXXXXXXXXX.png

出力結果

#携帯電話番号 平文: 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";


//ファジークエリの暗号文を取得します
String search = securityClient.search(partial);

//Goデータベース ファジー クエリ
List<DO> オブジェクト = SELECT * FROM table WHERE nick LIKE "%" #search# "%"

// Filter
List<DO> 結果 = new List<DO>();

for(DO オブジェクト : オブジェクト) {
# if (SecurityClient.decrypt(object.nick).contains(partial)){
result.add(object);
}## }

シナリオ 2:電話ファジー クエリ トップ 3 サンプル コード:

(プレフィックスインデックスが使用されます)

//ファジークエリを必要とするフラグメント

String Partial = "138";

## // データベースに移動してファジー クエリを実行します

List<DO> オブジェクト = SELECT * FROM table WHERE nick LIKE "$" 部分 "%"

## シナリオ 3

: 電話のファジー クエリサンプルコードの最後の 4 桁: (プレフィックスインデックスが使用されます)

//ファジークエリを必要とするフラグメント

String constant = "5383";

//あいまいクエリの暗号文を取得します
String search = securityClient.search(partial);
// ファジー クエリを実行するためにデータベースに移動します。
List<DO> オブジェクト = SELECT * FROM table WHERE nick LIKE 部分的な "%"

FAQ

  • このドキュメントに関する FAQ はありません