SecureCardUtilsPro.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.lightinit.hsdataplatformresdir.common;
  2. import com.lightinit.hsdataplatformresdir.entity.Securekey;
  3. import com.lightinit.hsdataplatformresdir.service.ISecureKeyService;
  4. import org.apache.shiro.SecurityUtils;
  5. import org.apache.shiro.subject.Subject;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.util.StringUtils;
  9. import javax.servlet.http.HttpSession;
  10. import java.security.InvalidKeyException;
  11. import java.security.NoSuchAlgorithmException;
  12. import java.text.ParseException;
  13. import java.text.SimpleDateFormat;
  14. import java.util.Date;
  15. /**
  16. * Created by Lantinit on 2018/2/1.
  17. */
  18. @Component
  19. public class SecureCardUtilsPro {
  20. @Autowired
  21. private ISecureKeyService secureKeyService;
  22. public boolean verification(HttpSession session,String token,String cardno,long synctime){
  23. String capText=session.getAttribute("SECUREKEY_SESSION_KEY")!=null?session.getAttribute("SECUREKEY_SESSION_KEY").toString():"";
  24. if(StringUtils.isEmpty(capText)){
  25. return false;
  26. }
  27. String realToken="";
  28. String[]TokenArray=capText.split(":::");
  29. for (String item:TokenArray) {
  30. String secretStr=item.substring(1)+":::"+cardno+":::"+synctime+":::"+item.substring(0,1);
  31. try {
  32. realToken+=OneTimePasswordAlgorithm.generateOTP(secretStr.getBytes(), 0, 2, false, -1);
  33. } catch (NoSuchAlgorithmException e) {
  34. e.printStackTrace();
  35. } catch (InvalidKeyException e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. if(realToken.equalsIgnoreCase(token)==false){
  40. return false;
  41. }
  42. session.removeAttribute("SECUREKEY_SESSION_KEY");
  43. return true;
  44. }
  45. public boolean verification(HttpSession session,String token,String username){
  46. Securekey securekey= secureKeyService.QueryOne(username);
  47. if(securekey==null){
  48. return false;
  49. }
  50. SimpleDateFormat syncDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  51. try {
  52. Date syncDate= syncDateFormat.parse(syncDateFormat.format(securekey.getSyncdatetime()));
  53. return verification(session,token,securekey.getSecurekey(),syncDate.getTime());
  54. } catch (ParseException e) {
  55. e.printStackTrace();
  56. }
  57. return false;
  58. }
  59. public boolean verification(HttpSession session,String token){
  60. Subject currentUser = SecurityUtils.getSubject();
  61. if(currentUser==null){
  62. return false;
  63. }
  64. return verification(session,token,currentUser.getPrincipal().toString());
  65. }
  66. }