Plan de développement du code d'application
1 Exigences du scénario
Après que l'ISV ait confirmé grossièrement son plan d'accès et son plan de chiffrement, il entre dans la phase de développement. Vous devez d'abord télécharger le dernier TOP SDK. Ce qui suit est une introduction au développement de code, divisée en trois parties : premièrement, l'API du SDK est présentée, la deuxième partie est les spécifications pour le développement de code, et enfin quelques démos de code dans divers scénarios sont répertoriées.
Veuillez noter que par souci de performances et de stabilité, veillez à respecter les spécifications du code !
2 Introduction du projet
API 2.1Introduction
Fonction | Paramètres | |
SecurityClient (constructeur) | Initialisation |
|
securityClient.encrypt | Crypter automatiquement les données avec la dernière clé de version | Les données peuvent être transférées par lots et restituées par lots |
SecurityClient.encryptPrevious | crypter automatiquement les données avec la clé de version précédente (peut être utilisée pendant la migration des changements de clé) | Can Données d'entrée par lots et rendement du lot |
SecurityClient.Decrypt | détermine automatiquement la version du texte chiffré et déchiffre les données avec la clé de version correspondante | peut transmettre les données par lots et les renvoyer par lots |
securityClient.isEncrypt |
| |
securityClient.search | Génère une requête floue pour une chaîne donnée |
|
Initialisation :
SecurityClient SecurityClient = new SecurityClient(new DefaultTaobaoClient(serverUrl, appkey, appSecret), randomNumber)
Remarque 1 : L'URL du serveur utilisée par défautTaobaoClient doit être le protocole https
Cryptage :
securityClient.encrypt("13888883333", type, sessionKey)
Jugement cryptotexte :
SecurityClient.isEncrypt(« 13888883333 », tapez)
Cryptage de clé de la version précédente :
securityClient.encryptPrevious("13888883333", type, sessionKey)
Déchiffrement :
securityClient déchiffre. ("~CKoqAl2hWzh54uBFv9Suug==~1~", tapez, sessionKey)
Clause de recherche floue :
String searchIndex = securityClient search("3333", tapez, sessionKey)
SELECT * FROM table_orders WHERE phone LIKE #searchIndex#%
(Cet exemple est un numéro de téléphone portable, d'autres exemples sont détaillés ci-dessous par scénario)
2.2Spécification d'appel crypté :
1) Tous utilisent la clé de session du compte principal, le sous-compte peut ne pas avoir d'autorisations
2) Pré-juger de la clé de session avant d'appeler
3) Autoriser la clé de session de retour avec l'heure d'expiration
4) Déterminez si le délai d'expiration + 90 jours de la clé de session a été dépassé. Si l'expiration dépasse 90 jours, il n'est pas nécessaire d'appeler le chiffrement et le déchiffrement (il ne réussira jamais avant la ré-autorisation, ce qui est une perte de temps. ressources). En supposant que le client a mal évalué, en fait, l'appel du chiffrement et du déchiffrement peut lever une exception. La solution suivante peut être utilisée :
essayez {
using using using using ‐ ‐ ' off off ‐ ‐ ‐ ‐ ‐‐ ‐ // Opérations de chiffrement et de déchiffrement
} catch (SecretException e) { # // Marquer la clé de session comme invalide, ne pas l'appeler à nouveau avant la ré-autorisation }
}
2.3
Exemple de scénario de code :
1 ) Initialisation :
SecurityClient securityClient
= new SecurityClient (new DefaultTaobaoClient(serverUrl, appkey, appSecret), Random Number);defaultTaobaoClient serverUrl doit être le protocole https, actuellement c'est https:/ /eco.taobao.com/router/ rest
(Environnement Sandbox :https://gw.api.tbsandbox.com/router/rest)
receiver_mobile Le type de champ crypté (type ) est le téléphone. D'autres types de champs cryptés (type) sont basés sur la méthode de requête de champ : le type de champ (type) de la méthode de cryptage ordinaire est simple et le type de champ (type) de la requête floue est la recherche.
Ajout et déchiffrement les paramètres d'entrée doivent apporter la clé de session
Résultat de sortie :
Texte brut du numéro de téléphone portable : 13834566786 -> Texte crypté : $138$SuR++h6AtlSj8Z59W2W9EQ==$103$
Texte crypté du numéro de téléphone portable : $138$SuR++h6AtlSj8Z59W2W9EQ==$10 3$ -> Texte brut : 1 3834566786
==========================TOP============== ========== +
3)
Ajout et décryptage de lots
Résultat de sortie
:
Numéro de téléphone portable Texte brut : 15923847823 -> Texte chiffré : 159 $AtyBFui4xvl92WV7GKwfBw ==$103$Numéro de téléphone portable texte brut : 13834566786 ->Cryptotexte : 138 $SuR ++h6AtlSj8Z59W2W9EQ==$103$
Texte chiffré du numéro de téléphone portable : $138$SuR++h6AtlSj8Z59W2W9EQ==$1 03$ -> ;Texte brut : 13834566786
Texte secret du numéro de téléphone portable : $159$AtyBFui4xvl92WV7GKwfBw==$103$ - >Texte brut : 15923847823
====================== ======TOP================== ======
nick Texte brut : taobaoTEST2 -> Texte chiffré : ~nID/f9qCBqgm7MXZSXBpfA= =~103~
nick Texte brut : taobaoTEST1 -> =~ 103~
Texte chiffré de pseudo : ~nID/f9qCBqgm7MXZSXBpfA==~103~ -> Texte brut : taobaoT EST2
Texte chiffré de pseudo : ~kgRCprD8gH2KuZ3dPoVuqg==~103~ ->texte brut : taobaoTEST1
4) Scénario de chiffrement normal :
Scénario 1 : n'apparaît pas dans la clause Where de l'instruction SQL. Obtenez directement les données à décrypter et à afficher ou à imprimer :
String cipher = ReadFromDataBase(); // SELECT cipher FROM table...
String phone = securityClient.decrypt(cipher, "phone", sessionKey) ;
: Scène 2 : il faut mettre le champ crypté comme condition de recherche de SQL dans le où (clé = "valeur") :
Chiffrement de chaîne = SecurityClient.enCrypt (P, "Téléphone", sessionKey ); Cela nécessite une préparation à la compatibilité : SELECT * FROM table WHERE phone in ( #cipher#, #p#)
5)
Prise en charge des scénarios de chiffrement de requêtes floues (
Non mobile champ du numéro de téléphone):
Scénario 1 : Champ de numéro de téléphone non mobile, exemple de code de requête floue : //Fragments nécessitant une requête floue
Chaîne partiel = "cdefg";
//Obtenir le texte chiffré de la requête floue
String search = securityClient.search(partial);
//Aller à la base de données pour effectuer une requête floue
List<DO> OÙ pseudo LIKE "%" + #search# + "%"
// Filtre
Liste<DO> résultat = nouvelle Liste<DO>();
pour (objet DO : objets) {
if (SecurityClient.decrypt(object.nick).contains(partial)){
result.add(object);
}
}
Scénario 2 : Top 3 des exemples de code de requête floue téléphonique :
(l'index de préfixe sera utilisé)
// Fragments nécessitant une requête floue
String partial = "138";
// Accédez à la base de données Effectuez une requête floue
List<DO> objets = SELECT * FROM table WHERE nick LIKE "$" + partial + "%"
Scénario 3 : phone Exemple de 4 chiffres après la requête floue Code :
(l'index du préfixe sera utilisé)
//Fragments nécessitant une requête floue
String partial = "5383";
//Obtenir le texte chiffré de la requête floue
String search = securityClient.search(partial);
// Accédez à la base de données pour effectuer une requête floue
List<DO> objets = SELECT * FROM table WHERE nick LIKE partial+"%"
FAQ
- Il n'y a pas encore de FAQ sur ce document