2012-04-04 6 views
1

시간 (현재 시간)을 기준으로 토큰을 생성하는 데 다음 프로그램을 사용하고 있습니다. 제대로 작동 했으므로 토큰이 생성됩니다.asp.net에서 시간을 기준으로 토큰을 잠 그려면?

  public string GenerateToken() 
      { 
       MD5 md5 = System.Security.Cryptography.MD5.Create(); 
       DateTime input = DateTime.Now; 
       byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input.ToString()); 
       byte[] hash = md5.ComputeHash(inputBytes); 

       StringBuilder sb = new StringBuilder(); 
       for (int i = 0; i < hash.Length; i++) 
       { 
        sb.Append(hash[i].ToString("X2")); 
       } 
       return sb.ToString(); 
      } 

은 내가 minutes.It 내가 GetToken() method에 액세스 의미 2로 토큰을 잠금 (만료)하는 시도에 대해 다음 프로그램을 사용하여, 그것은 particular Time(current Time) .I의 토큰을 유효한 시간 2 분으로 설정해야 돌아갑니다 두 번째 시간 전에 동일한 토큰을 가져와야합니다 .2 분 후에 getToken()에 액세스합니다. 새 토큰을 가져와야합니다. 어떻게해야합니까? 토큰을 잠그는 방법은 무엇입니까? 당신이 암호화를 사용해야 동안

 public string GetToken() 
     { 
      DateTime currentTime = DateTime.UtcNow;    
      tokenExp = DateTime.UtcNow.AddMinutes(2); 
      if (tokenExp >= currentTime) 
      { 
       token = GenerateToken(); 
       return token; 
      } 

      else lock (tokenLock) 
       { 
        if (tokenExp >= currentTime) 
        { 
         token = GenerateToken(); 
         //return token; 

        } 
        return token; 
       } 

답변

2

당신은 AES, 3DES를 사용할 수는 ...

DateTime dateTime = DateTime.UtcNow; 
dateTime = dateTime.AddSeconds(-dateTime.Second); 
if (dateTime.Minute % 2 != 0) 
    dateTime = dateTime.AddMinutes(1); 

이 2 분의 기간 동안 동일한 경우에도 분 시간을 생성합니다.

UPDATE

암호화 및 해시 그것이 잠금 토큰을 관련이 있습니까? 토큰은 .correct 생성하는 데 사용됩니다

public string GenerateToken() 
{ 
    MD5 md5 = System.Security.Cryptography.MD5.Create(); 
    DateTime dateTime = DateTime.UtcNow; 
    dateTime = dateTime.AddSeconds(-dateTime.Second); 
    if (dateTime.Minute % 2 != 0) 
     dateTime = dateTime.AddMinutes(1); 

    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(dateTime.ToString()); 
    byte[] hash = md5.ComputeHash(inputBytes); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < hash.Length; i++) 
    { 
     sb.Append(hash[i].ToString("X2")); 
    } 
    return sb.ToString(); 
} 
+0

GetToken()에서 토큰 잠금을 생성하려고 시도했습니다. – user

+0

잠금을 획득 할 필요가 없습니다. 위에 표시된대로 dateTime을 사용하도록 GenerateToken 메서드를 수정하십시오. 그것은 dateTime이 2 분에 한 번 변경되고 매초/분마다 변경되지 않는다는 것입니다. – Ramesh

+0

그 GenerateToken() 코드를 편집하여 게시 할 수 있습니다. 귀하의 요점을 알 수 없습니다. – user

0

당신은 해시 을 사용하고 있습니다.

해싱은 단방향이지만 암호화는 두 가지 방법입니다. 즉, 토큰을 다시받을 때 토큰을 해독하여 시간 차이를 계산하고 2 분 초과인지 확인할 수있는 원래 값을 얻을 수 있습니다. 당신은 GenerateToken 방법 아래 같은 것을 사용한다

+0

전체 코드? – user

+0

잠금 구현은 실용적이지 않습니다. 디자인을 변경해야합니다. 내 대답은 귀하의 질문에 대답하지 않을 수도 있지만 올바른 방향으로 당신을 가리 키려고합니다. – Aliostad

관련 문제