암호학 의 카 이 저 암호 화 복호화 알고리즘
1826 단어 현대 암호학착실하게 일 하 는 C
이 암호 화 방법 은 케 사의 이름 으로 명명 되 었 는데, 그 당시 케 사 는 이 방법 으로 장군 들 과 연락 을 취 했다.
그러나 알파벳 을 이용 해 교체 하 는 모든 암호 화 기술 과 마찬가지 로 케 사 비밀 번 호 는 쉽게 풀 리 고 실제 응용 에서 도 통신 안전 을 보장 할 수 없다.
그래서 케 사 비밀 번 호 는 보통 다른 복잡 한 암호 화 방법의 한 단계 로 여 겨 진다.
카 이 저 비밀번호 의
과정 이 비교적 간단 하고, 직접 공식 을 세운다.
#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;
}