암호학 의 카 이 저 암호 화 복호화 알고리즘

암호학 에서 카 이 저 (Caeser) 암호 (또는 카 이 저 암호 화, 카 이 저 변환, 암호 화 변환) 는 가장 간단 하고 널리 알려 진 암호 화 기술 이다.그것 은 암호 화 를 교체 하 는 기술 이다.
이 암호 화 방법 은 케 사의 이름 으로 명명 되 었 는데, 그 당시 케 사 는 이 방법 으로 장군 들 과 연락 을 취 했다.
그러나 알파벳 을 이용 해 교체 하 는 모든 암호 화 기술 과 마찬가지 로 케 사 비밀 번 호 는 쉽게 풀 리 고 실제 응용 에서 도 통신 안전 을 보장 할 수 없다.
그래서 케 사 비밀 번 호 는 보통 다른 복잡 한 암호 화 방법의 한 단계 로 여 겨 진다.
카 이 저 비밀번호 의
  • 암호 화 대체:
  • c = Ekey(m)  ≡ a, + key(mod 26) 0≤m≤25
  •         복호화 대체:
  • m = Dkey(c) ≡ c - key(mod 26) 0≤m≤25

  • 과정 이 비교적 간단 하고, 직접 공식 을 세운다.
    #include 
    #include 
    
    //        
    char *encode(char *c_str, int key);
    //        
    char *decode(char *m_str, int key); 
    
    
    //    
    char *encode(char *c_str, int key)
    {
    	char *p_str = c_str;
    	assert (c_str);
    	
    	while (*c_str)
    	{
    		if (' ' == *c_str)
    		{
    			++c_str;
    			continue;
    		}
    
    		if ((*c_str < 'A') || (*c_str > 'Z'))
    			assert(0);
    		
    		*c_str -= 'A';
    		*c_str = (*c_str+key)%26;//      
    		*c_str += 'A';
    
    		++c_str;
    	}
    	
    	return p_str;
    }
    
    //    
    char *decode(char *m_str, int key)
    {
    	
    	char *p_str = m_str;
    	assert (m_str);
    	
    	while (*m_str)
    	{
    		if (' ' == *m_str)
    		{
    			++m_str;
    			continue;
    		}
    
    		if ((*m_str < 'A') || (*m_str > 'Z'))
    			assert(0);
    		
    		*m_str -= 'A';
    		*m_str += 26; //     key ,    
    		*m_str = (*m_str-key)%26;//      
    		*m_str += 'A';
    
    		++m_str;
    	}
    	
    	return p_str;
    }
    
    int main()
    {
    	//    
    	char str[128] = "";
    	int key = 0;
    
    	//    
    	printf("      :");
    	gets(str);
    	printf("    :");
    	scanf("%d", &key);
    
    	//  
    	encode(str, key);
    
    	//    
    	printf("  :%s
    ", str); // decode(str, key); // , printf(" :%s
    ", str); return 0; }

    좋은 웹페이지 즐겨찾기