c语言 数据加密

Python010

c语言 数据加密,第1张

#include <stdio.h>

void main()

{

int a[5] /* 存储各位上的数字 */

int num, temp, encripy/* num是要输入的数,temp是交换时用来存储临时值,encripy是加密后的数据 */

int i

do

{

printf("Please input the number:")

scanf("%d",&num)

if(!(num/10000 !=0 &&num/100000==0))

printf("Data error!\n")

}while(!(num/10000 !=0 &&num/100000==0))

a[0] = num/10000%10/* 求各位上的数字 */

a[1] = num/1000%10

a[2] = num/100%10 /* 百位上的数字 */

a[3] = num/10%10/* 十位上的数字 */

a[4] = num%10 /* 个位上的数字 */

for(i = 0i <5++i) /* 开始加密 */

a[i] = (a[i] + 8)%10

temp = a[0] /* 交换位置开始 */

a[0] = a[3]

a[3] = temp

temp = a[1]

a[1] = a[2]

a[2] = temp /* 交换位置结束同时加密结束 */

encripy = a[0]*10000 + a[1]*1000 + a[2]*100 + a[3]*10 + a[4] /* 加密后的数据 */

printf("\nThe scourse number: %d\n", num)/* 输出原数据 */

printf("\nEncripy the number: %d\n\n", encripy) /* 输出加密后的数据 */

}

在VC6.0成功运行,希望对你有帮助!

看你催就仓促写了个,自我感觉写的不是很好,但是能用了。数据只能是大写字母组成的字符串。

加密的时候,输入Y,然后输入要加密的文本(大写字母)

解密的时候,输入N,然后输入一个整数n表示密文的个数,然后n个整数表示加密时候得到的密文。

/*RSA algorithm */

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define MM 7081

#define KK 1789

#define PHIM 6912

#define PP 85

typedef char strtype[10000]

int len

long nume[10000]

int change[126]

char antichange[37]

void initialize()

{ int i

char c

for (i = 11, c = 'A'c <= 'Z'c ++, i ++)

{ change[c] = i

antichange[i] = c

}

}

void changetonum(strtype str)

{ int l = strlen(str), i

len = 0

memset(nume, 0, sizeof(nume))

for (i = 0i <li ++)

{ nume[len] = nume[len] * 100 + change[str[i]]

if (i % 2 == 1) len ++

}

if (i % 2 != 0) len ++

}

long binamod(long numb, long k)

{ if (k == 0) return 1

long curr = binamod (numb, k / 2)

if (k % 2 == 0)

return curr * curr % MM

else return (curr * curr) % MM * numb % MM

}

long encode(long numb)

{ return binamod(numb, KK)

}

long decode(long numb)

{ return binamod(numb, PP)

}

main()

{ strtype str

int i, a1, a2

long curr

initialize()

puts("Input 'Y' if encoding, otherwise input 'N':")

gets(str)

if (str[0] == 'Y')

{ gets(str)

changetonum(str)

printf("encoded: ")

for (i = 0i <leni ++)

{ if (i) putchar('-')

printf(" %ld ", encode(nume[i]))

}

putchar('\n')

}

else

{ scanf("%d", &len)

for (i = 0i <leni ++)

{ scanf("%ld", &curr)

curr = decode(curr)

a1 = curr / 100

a2 = curr % 100

printf("decoded: ")

if (a1 != 0) putchar(antichange[a1])

if (a2 != 0) putchar(antichange[a2])

}

putchar('\n')

}

putchar('\n')

system("PAUSE")

return 0

}

测试:

输入:

Y

FERMAT

输出:

encoded: 5192 - 2604 - 4222

输入

N

3 5192 2604 4222

输出

decoded: FERMAT