애플리케이션 코드 개발 계획
1 시나리오 요구 사항
ISV 대략 확인됨 자체적인 접근 솔루션 및 암호화 솔루션을 개발한 후 개발 단계에 들어갑니다. 먼저 최신 TOP SDK를 다운로드해야 합니다. 다음은 세 부분으로 나누어진 코드 개발에 대한 소개입니다. 첫째, SDK의 API가 소개되고, 두 번째 부분이 코드 개발 사양이며, 마지막으로 다양한 시나리오의 일부 코드 데모가 나열됩니다.
성능과 안정성을 위해 코드 사양을 반드시 준수해주시기 바랍니다!
2 제안서 소개#🎜 🎜 API 🎜#
기능
SecurityClient(생성자)#🎜 🎜 # 초기화 |
| |
securityClient.encrypt# 🎜 🎜# | 최신 버전 키로 데이터 자동 암호화데이터 일괄 입력 및 일괄 반환 가능# 🎜🎜 # | |
이전 버전 키로 데이터 자동 암호화 (키 변경 마이그레이션에 사용될 수 있음) | 데이터를 일괄 입력하고 일괄 반환 가능 | #🎜🎜 # | securityClient.decrypt
자동으로 암호문 버전을 확인하고 해당 버전 키를 사용하여 데이터를 복호화합니다 #🎜🎜 ## 🎜🎜# | 데이터를 일괄 전송하고 일괄 반환할 수 있음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 { ] // 추가 및 암호 해독 작업 #🎜 🎜## 🎜🎜# if(ErrorUtil.isInvalidSession(e)) {#🎜🎜 ##🎜 ###### 🎜🎜#// 호출하지 마세요#🎜🎜 ## 🎜🎜 ## 🎜🎜 }#🎜🎜 ## 🎜🎜 ## 🎜 🎜 🎜#} 코드 시나리오 예: #🎜 🎜 ## ## ## ## ###1) 초기화 :####### ## ####SecurityClient SecurityClient#🎜🎜 ## 🎜🎜 ## 🎜 🎜# defaultTaobaoClient serverUrl은 https 프로토콜이어야 하며 현재는 # 🎜🎜#https://eco.taobao.com/router/rest (샌드박스 환경: 2) 암호화 및 암호 해독: # 🎜 🎜# receiver_mobile 암호화된 필드 유형(type)은 전화입니다. 다른 암호화된 필드 유형(유형)은 필드 쿼리 방법을 기반으로 합니다. 일반 암호화 방법의 필드 유형(유형)은 단순하고 퍼지 쿼리의 필드 유형(유형)은 검색입니다.#🎜🎜 ##🎜🎜 # 매개변수 추가 및 복호화 시 세션키를 가져와야 함 출력 결과 : # 🎜🎜# 휴대폰 번호 일반 텍스트: 13834566786 -> 암호화된 텍스트: $138$SuR++h6AtlSj8Z59W2W9EQ==$103$ 휴대폰 번호 암호화된 텍스트: $138$SuR++h6AtlSj8Z59W2W9EQ==$1 03$ -> 일반 텍스트: 1 3834566786 ==========================TOP============== ========== + 3) 일괄 추가 및 암호 해독 출력 결과 : 휴대폰 번호 일반 텍스트: 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"; 시나리오 2 ㅋㅋㅋ 데이터베이스로 이동 퍼지 쿼리 수행 List<DO> 개체 = SELECT * FROM table WHERE nick LIKE "$" + 부분 + "%" 시나리오 3 : phone 예 퍼지 쿼리의 마지막 4자리 코드: (접두사 인덱스가 사용됩니다) String 부분 = "5383"; //퍼지 가져오기 query ciphertext String search = securityClient.search(partial); // 퍼지 쿼리를 수행하려면 데이터베이스로 이동 |