WebService 의 사용자 제어 방식 과 암호 화 알고리즘 분류의 정리
4482 단어 WebService암호 화 알고리즘
우리 시스템 에 서 는 모든 WebSerivce 를 권한 으로 제어 합 니 다.여기에 기록 하여 준비 하 세 요!
예시
@Service
@Transactional
@WebService(endpointInterface = "com.mycompany.sms.ws.SmsService", targetNamespace = "http://www.mycompany.cn/sms", serviceName = "ServiceInstance")
public class SmsServiceImpl implements SmsService {
private SecretKey secretKey;
@Autowired
private SessionManager sessionManager;
// 【 16 】
private String hexStr = "3243456789123459";
public SmsServiceImpl() {
byte[] hex = SecurityHelper.hexStrToByte(hexStr);
secretKey = new SecretKeySpec(hex, "DES");
}
@Override
public String login(String account, String password) {
User user = sessionManager.login(secretKey, account, password);
return user.getSessionId();
}
@Override
public void logoff(String sessionId) {
sessionManager.logoff(sessionId);
}
@Override
public boolean sendMessage(String sessionId, String msgNumber,
String msgContent) {
sessionManager.getUser(secretKey, sessionId);
do something...;
return true;
}
}
비고:1.사용 시 클 라 이언 트 에 사용자 와 비밀 번 호 를 제공 합 니 다.사용자 와 비밀번호 사이 에는 ws 의 키 와 관련 이 있 습 니 다.
2.먼저 로그 인하 여 사용자 와 비밀 번 호 를 검증 하고 sessionId 로 돌아 갑 니 다.
3.다른 function 을 사용 하면 session Id 에 들 어가 session 에 이 ID 가 있 는 지,그리고 secretKey 가 같은 지 판단 해 야 합 니 다.이 단 계 는 소 용이 없 을 것 같 습 니 다.
세 션 관리
@Component
public class SessionManager {
@Autowired
private CacheProvider cacheProvider;
public User login(SecretKey secretKey, String account, String password) {
SecurityHelper securityHelper = new SecurityHelper(secretKey);
String password2;
try {
password2 = SecurityHelper.byteToHexStr(securityHelper
.encode(account.getBytes("UTF-8")));
} catch (UnsupportedEncodingException e) {
throw new LoginException(e);
}
if (password2.equals(password)) {
User user = new User(account);
user.setSecretKey(secretKey.getEncoded());
addSession(user);
return user;
} else {
throw new LoginException(" ");
}
}
public void logoff(String sessionId) {
removeSession(sessionId);
}
private void addSession(User user) {
cacheProvider.put("webservice-session-" + user.getSessionId(), user);
}
private void removeSession(String sessionId) {
cacheProvider.remove("webservice-session-" + sessionId);
}
public User getUser(SecretKey secretKey, String sessionId) {
User user = (User) cacheProvider.get("webservice-session-" + sessionId);
if (user == null) {
throw new WsException(" ");
} else if (!bytesEquals(secretKey.getEncoded(), user.getSecretKey())) {
throw new WsException(" ");
} else {
return user;
}
}
private boolean bytesEquals(byte[] bytes1, byte[] bytes2) {
for (int i = 0; i < bytes1.length; i++) {
if (bytes1[i] != bytes2[i]) {
return false;
}
}
return true;
}
}
비고:cacheProvider 는 일반적인 캐 시 도구 인터페이스 입 니 다.
3.암호 화 알고리즘
위 에서 마침 des 를 보 았 습 니 다.여기 서 암호 화 알고리즘 을 간단하게 모 았 습 니 다.
1.HASH
MD5,SHA 1,SHA 256 같은 것 은 모두 단 방향 HASH 알고리즘 으로 결과 에서 원래 내용 을 내 보 낼 수 없고 원래 내용 에 약간의 변화 가 있 으 면 HASH 값 이 변 합 니 다.거 스 를 수 없 는 것 이 특징 이다.
2.대칭 암호 화
DES,3DES,AES 등 암호 화 와 복호화 용 같은 키 가 특징 입 니 다.DES 가 늙 으 면 안전 하지 않 습 니 다.AES 가 최신 입 니 다.
3.비대 칭 암호 화
RSA,ECC(타원 곡선)등 은 서로 다른 키,하나의 공,하나의 개인 이 특징 이다.하나의 비밀 은 다른 비밀 로 만 복호화 할 수 있다.공공 암호 화 보증 은 개인 만 볼 수 있 고 개인 암호 화 보증 내용 은 이 사람 이 보 낸 것 이다.
4.자주 사용 하 는 https 는 비대 칭 암호 화로 대칭 암호 화 된 키 를 전달 하고 정상 적 인 내용 은 대칭 암호 화로 전달 할 수 있 습 니 다.
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
귀멸의 칼날, 토호를 멸비정상적인 고부하에 대비하는 것은 쉽지 않은 것은 중대한 인식에 있습니다. 10/13(화) 00:00:00←예매권의 좌석 지정・신규 감상권 구입 접수 개시 나도 귀멸의 칼 팬 중 한 명으로 예매권을 구입하고 좌석 지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.