애플리케이션 코드 개발 계획


1 시나리오 요구 사항

ISV 대략 확인됨 자체적인 접근 솔루션 및 암호화 솔루션을 개발한 후 개발 단계에 들어갑니다. 먼저 최신 TOP SDK를 다운로드해야 합니다. 다음은 세 부분으로 나누어진 코드 개발에 대한 소개입니다. 첫째, SDK의 API가 소개되고, 두 번째 부분이 코드 개발 사양이며, 마지막으로 다양한 시나리오의 일부 코드 데모가 나열됩니다.

성능과 안정성을 위해 코드 사양을 반드시 준수해주시기 바랍니다!

2 제안서 소개#🎜 🎜 API 🎜#

기능

# 🎜 🎜 #parameter최신 버전 키로 데이터 자동 암호화데이터 일괄 입력 및 일괄 반환 가능# 🎜🎜 #securityClient.encryptPrevioussecurityClient.decrypt데이터를 일괄 전송하고 일괄 반환할 수 있음

SecurityClient(생성자)#🎜 🎜 #

초기화

securityClient.encrypt# 🎜 🎜#

이전 버전 키로 데이터 자동 암호화 (키 변경 마이그레이션에 사용될 수 있음)

데이터를 일괄 입력하고 일괄 반환 가능

#🎜🎜 #

자동으로 암호문 버전을 확인하고 해당 버전 키를 사용하여 데이터를 복호화합니다

#🎜🎜 ## 🎜🎜#

securityClient.isEncrypt

########################################### search
주어진 문자열에 대한 퍼지 쿼리 생성

# 🎜 🎜#

초기화:

SecurityClient SecurityClient = new SecurityClient(new DefaultTaobaoClient(serverUrl, appkey, appSecret), RandomNumber)

참고 1: 기본 TaobaoClient에서 사용하는 serverUrl은 https 프로토콜이어야 합니다

# 🎜🎜#

암호화:

securityClient.encrypt(“13888883333”, 유형, sessionKey) # 🎜🎜#

암호문 판단: 🎜 #SecurityClient.isEncrypt("13888883333", 유형)

#🎜 🎜 #

이전 버전 키 암호화:

securityClient.encryptPrevious("13888883333", type, sessionKey)#🎜 🎜#

해독:

# 🎜 🎜# securityClient.decrypt(“~CKoqAl2hWzh54uBFv9Suug==~1~”, 유형, sessionKey)

#🎜 🎜# 불분명한 검색 절:

String searchIndex = securityClient.search(“3333”, type, sessionKey)

#🎜🎜 #

SELECT * FROM table_orders WHERE Phone LIKE #searchIndex#%

(이 예는 휴대폰 번호이고 다른 예는 아래에 표시됩니다. 장면별 상세 설명)

2.2 암호화 호출 사양 :

1) 모두 메인 계정의 세션 키를 사용합니다. 서브 계정에는 권한이 없을 수 있습니다.

2) 사전 심사 세션

3) 승인은 만료 시간이 있는 세션 키를 반환합니다.

4) 만료 시간 + 세션 키 90일이 초과되었는지 확인합니다. 만료 시간이 90일을 초과하면 암호화 및 복호화를 호출할 필요가 없습니다. (재인증 전에는 절대 성공하지 않습니다.) , 자원 낭비) 결국 고객의 판단이 잘못되어 실제 암호화 및 복호화 호출에서 예외가 발생할 수 있다고 가정합니다. 다음 솔루션을 사용할 수 있습니다.

try {

] // 추가 및 암호 해독 작업 #🎜 🎜## 🎜🎜#

} catch(SecretException e) {

if(ErrorUtil.isInvalidSession(e)) {#🎜🎜 ##🎜 ###### 🎜🎜#// 호출하지 마세요#🎜🎜 ## 🎜🎜 ## 🎜🎜

}#🎜🎜 ## 🎜🎜 ## 🎜 🎜 🎜#}

2.3

코드 시나리오 예: #🎜 🎜 ## ## ## ## ###1) 초기화 :####### ## ####SecurityClient SecurityClient#🎜🎜 ## 🎜🎜 ## 🎜 🎜#

= new SecurityClient(new DefaultTaobaoClient(serverUrl, appkey, appSecret), 임의 숫자);

defaultTaobaoClient serverUrl은 https 프로토콜이어야 하며 현재는 # 🎜🎜#https://eco.taobao.com/router/rest

(샌드박스 환경:

https://gw.api.tbsandbox.com/router/rest

)# 🎜🎜#

2) 암호화 및 암호 해독: # 🎜 🎜#

receiver_mobile 암호화된 필드 유형(type)은 전화입니다. 다른 암호화된 필드 유형(유형)은 필드 쿼리 방법을 기반으로 합니다. 일반 암호화 방법의 필드 유형(유형)은 단순하고 퍼지 쿼리의 필드 유형(유형)은 검색입니다.#🎜🎜 ##🎜🎜 # 매개변수 추가 및 복호화 시 세션키를 가져와야 함

출력 결과 : # 🎜🎜#

휴대폰 번호 일반 텍스트: 13834566786 -> 암호화된 텍스트: $138$SuR++h6AtlSj8Z59W2W9EQ==$103$

휴대폰 번호 암호화된 텍스트: $138$SuR++h6AtlSj8Z59W2W9EQ==$1 03$ -> 일반 텍스트: 1 3834566786

==========================TOP============== ========== +

3)

일괄 추가 및 암호 해독

LB1o4ALOVXXXXbKaFXXXXXXXXXX.png출력 결과

:

LB1NX8hPXXXXXcjXpXXXXXXXXXX.png

휴대폰 번호 일반 텍스트: 15923847823 -> 암호화 텍스트: $159$AtyBFui4xvl92WV7GKwfBw ==$103$휴대폰 번호 일반 텍스트: 13834566786 ->암호 텍스트: $138$Su R++h6AtlSj8Z59W2W9EQ==$103$

휴대폰 번호 암호 텍스트: $138$SuR++h6AtlSj8Z59W2W9EQ==$1 03$ -> ;일반 텍스트: 13834566786

휴대폰 번호 비밀 텍스트: $159$AtyBFui4xvl92WV7GKwfBw==$10 3$ ->일반 텍스트: 15923847823

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

nick 일반 텍스트: taobaoTEST2 -> 암호 텍스트: ~nID/f9qCBqgm7MXZSXBpfA= =~103~

nick 일반 텍스트: taobaoTEST1 -> 암호 텍스트: ~kgRCprD8gH2KuZ3dPoVuqg== ~103~

nick 암호문: ~nID/f9qCBqgm7MXZSXBpfA==~103~ -> 일반 텍스트: taobaoT EST2

nick 암호문: ~kgRCprD8gH2KuZ3dPoVuqg==~103~ ->plaintext: taoba oTEST1

4) 일반 암호화 시나리오 :

시나리오 1: 은 SQL 문의 where 절에 나타나지 않습니다. 해독하고 표시하거나 인쇄할 데이터를 직접 가져옵니다.

String cipher = ReadFromDataBase(); // 테이블에서 암호 선택...

String Phone = securityClient.decrypt(cipher, “phone”, sessionKey) ;

: 장면 2: 把 SQL의 검색 조건으로 암호화된 필드를 where (key = "value")에 넣어야 합니다.

String cipher = SecurityClient.enCrypt (P, "Phone", " PHONE", 세션키 ); 이를 위해서는 호환성 준비가 필요합니다. SELECT * FROM table WHERE 전화 입력( #cipher#, #p#)

5)

퍼지 쿼리 암호화 시나리오 지원(

비모바일 전화번호 필드)

:

시나리오 1: 휴대폰이 아닌 전화번호 필드 퍼지 쿼리 샘플 코드: //퍼지 쿼리가 필요한 조각

문자열 부분 = "cdefg";


//퍼지 쿼리 ciphertext 가져오기
문자열 검색 = securityClient.search(partial);

//퍼지 쿼리를 수행하려면 데이터베이스로 이동
List<DO> 개체 = SELECT * FROM 테이블 WHERE nick LIKE "%" + #search# + "%"

// 필터
List<DO> result = new List<DO>();

for(DO object :objects) {
if (SecurityClient.decrypt(object.nick).contains(partial)){
result.add(object);
}
}

시나리오 2 ㅋㅋㅋ 데이터베이스로 이동 퍼지 쿼리 수행 List<DO> 개체 = SELECT * FROM table WHERE nick LIKE "$" + 부분 + "%"

시나리오 3

: phone 예 퍼지 쿼리의 마지막 4자리 코드:

(접두사 인덱스가 사용됩니다)

//퍼지 쿼리가 필요한 조각

String 부분 = "5383";

//퍼지 가져오기 query ciphertext String search = securityClient.search(partial);

// 퍼지 쿼리를 수행하려면 데이터베이스로 이동

List<DO> 개체 = SELECT * FROM table WHERE nick LIKE 부분+“%”

FAQ

  • 이 문서에 대한 FAQ는 아직 없습니다