㈠ C语言数字加密
/*
输入1个四位数,将其加密后输出。
方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:括号内是说明
输入
1257
输出
The encrypted number is 4621(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
*/
#include <stdio.h>
int main( )
{
int number, digit1, digit2, digit3, digit4, newnum;
scanf("%d", &number);
digit1 = number/1000;
digit2 = (number - 1000 * digit1)/100;
digit3 = (number - 1000 * digit1 - 100 * digit2)/10;
digit4 = number - 1000 * digit1 - 100 * digit2 - 10 * digit3;
digit1 += 9;
digit1 %= 10;
digit2 += 9;
digit2 %= 10;
digit3 += 9;
digit3 %= 10;
digit4 += 9;
digit4 %= 10;
//第三位数是1的情况不做考虑
newnum = digit3 * 1000 + digit4 * 100 + digit1 * 10 +digit2;
printf("The encrypted number is %d\n", newnum);
return 0;
}
㈡ C语言字符串按要求加密 求教
1 子函数的修改。只要减掉24 即可,其余语句多余。
void encryp(char *plain,char *cipher)
{
int temp;
while(*plain!='\0')
{
temp=*plain-24;
*cipher=temp;
plain++;
cipher++;
}
*cipher='\0';
}
2 对输出句的修改。改为按数字格式(知识点)输出即可。
{ int i=0; // 增加一变量 i =0;
。。。。。。。。
while(ch2[i]!='\0')
printf("%d",ch2[i++]);
return 0;
}
㈢ C语言 加密数字为字母
#include<stdio.h>
intmain()
{
inta;
scanf("%d",&a);
do
{
putchar('a'+a%10);
a/=10;
}while(a);
return0;
}
㈣ c语言 数据加密
什么是异或算法
异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。
例程:
/*以DWORD为单位对文件进行加密,将每个DWORD与0xfcba0000(密钥)做异或,写入另一个文件*/
#include<stdio.h>
#include<stdlib.h>
#defineDWORDunsignedlong
#defineBYTEunsignedchar
#definefalse0
#definetrue1
intmain(intargc,char*argv[])
{
FILE*hSource;
FILE*hDestination;
DWORDdwKey=0xfcba0000;
char*pbBuffer;
DWORDdwBufferLen=sizeof(DWORD);
DWORDdwCount;
DWORDdwData;
if(argv[1]==0||argv[2]==0)
{
printf("missingargument!
");
returnfalse;
}
char*szSource=argv[1];
char*szDestination=argv[2];
hSource=fopen(szSource,"rb");//打开源文件.
hDestination=fopen(szDestination,"wb");//打开目标文件
if(hSource==NULL){printf("openSourceFileerror!");returnfalse;}
if(hDestination==NULL){printf("openDestinationFileerror!");returnfalse;}
//分配缓冲区
pbBuffer=(char*)malloc(dwBufferLen);
do{
//从源文件中读出dwBlockLen个字节
dwCount=fread(pbBuffer,1,dwBufferLen,hSource);
//加密数据
dwData=*(DWORD*)pbBuffer;//char*TOdword
dwData^=dwKey;//xoroperation
pbBuffer=(char*)&dwData;
//将加密过的数据写入目标文件
fwrite(pbBuffer,1,dwCount,hDestination);
}while(!feof(hSource));
//关闭文件、释放内存
fclose(hSource);
fclose(hDestination);
printf("%sisencryptedto%s
",szSource,szDestination);
return0;
}
㈤ c语言数字后移加密
#include<stdio.h>
intmain()
{
inta,b;
scanf("%d",&a);
b=0;
do
{
b=b*10+(a%10+2)%10;
a/=10;
}while(a);
for(a=0;b;b/=10)
{
a=a*10+b%10;
}
printf("%d ",a);
return0;
}
㈥ c语言加密算法
看你催就仓促写了个,自我感觉写的不是很好,但是能用了。数据只能是大写字母组成的字符串。
加密的时候,输入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 = 0; i < l; i ++)
{ 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 = 0; i < len; i ++)
{ if (i) putchar('-');
printf(" %ld ", encode(nume[i]));
}
putchar('\n');
}
else
{ scanf("%d", &len);
for (i = 0; i < len; i ++)
{ 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
㈦ C语言指针实现小于8位数字加密
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
main()
{
char *input_number = NULL,*temp = NULL,*p = NULL;;
char c;
int i = 0,num = 0;
input_number = (char *)malloc(10);
memset(input_number,0,10);
temp = (char *)malloc(10);
memset(temp,0,10);
printf("请输入8位数字:\n");
/*输入要加密的数据*/
while(i < 8)/*只取8个字符的数据*/
{
c = getchar();
if(c <= '9' && c >= '0')/*只从中取整数*/
{
input_number[i] = c;
i++;
}
}
input_number[i] = '\0';
p = &input_number[7];
/*将输入的数据倒序存储*/
i = 0;
while(i < 8)
{
temp[i] = *p;
p --;
i ++;
}
temp[i] = '\0';
/*加密运算*/
i = 0;
for(i = 0; i < 8; i ++)
{
num = temp[i] - 48;/*字符转换为整形*/
num = num + 5;
num = num % 10;
temp[i] = num + 48;/*整形转换为字符*/
}
/*第一位和最后一位数据交换*/
p = temp;
temp[8] = *p;
temp[0] = num + 48;
/*得到结果*/
sprintf(input_number,"%s",temp);
printf("input_number = %s\n",input_number);
/*释放*/
if(NULL != temp)
{
free(temp);
temp = NULL;
}
if(NULL != input_number)
{
free(input_number);
input_number = NULL;
}
return 0;
}
㈧ c语言编写程序,并加密数据
#include<stdio.h>
void passwordnum(long a);
int main(void)
{
long num;
while(!scanf("%d",&num))
{
while(getchar()!='\n'); //把数字后面的不纯净输入吸收掉
printf("Input Error! please retry anain.\n");
}
passwordnum(num);
printf("\n");
return 0;
}
void passwordnum(long a)
{
if(a>0)
{
passwordnum(a/10);
printf("%d",(a+2)%10);
}
else if(a<0)
{
printf("-");
a=-a;
passwordnum(a);
}
}
㈨ 用C语言编程实现如下功能按照如下方法加密数据。
#include <stdio.h>
int power(int x,int y)
{
int w;
w=1;
do {
if (y==0) break;
if (y%2)
{
w*=x;
y--;
}
else
{
x*=x;
y/=2;
}
}while (y);
return (w);
}
int main()
{
int i,o,w,n,j;
printf("Please input a integer:");
scanf("%d",&i);
w=0;
o=0;
do{
n=i;
i=i/10;
n=(n十2);
n=n*power(10,w);
o十=n;
w十十;
}while(i);
printf("The code is:%d\n",o);
getchar();getchar();
retern (0);
}
㈩ C语言中的数据加密(跪求)
下面是个例子,对12345678加密。
想对哪个8位数加密,调ProcessInt这个函数就可以了。
如果8位内的任意整数的话,楼主做做改动即可,不难实现。
程序考虑到让楼主看的清楚,并没有将效率写到最大。
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
void ProcessInt(int* piInt)
{
int iArray[8];
int iResult = (*piInt);
int iTmp = *piInt;
for (int i = 0; i < 8; i++)
{
iResult = iResult / (int)pow(10, 8 - 1 - i);
iArray[i] = iResult;
iResult = iTmp - iResult * (int)pow(10, 8 - 1 - i);
iTmp = iResult;
}
//1.sequence
//2.replace the number by plus 5 and then div 10
for (int i = 0; i < 8; i++)
{
iArray[i] = (iArray[i] + 5) % 10;
}
//3.first->last, last->first
//4.construct the number
iResult = iArray[0] * (int)pow(10, 7);
iResult = iResult + iArray[6] * (int)pow(10, 6);
iResult = iResult + iArray[5] * (int)pow(10, 5);
iResult = iResult + iArray[4] * (int)pow(10, 4);
iResult = iResult + iArray[3] * (int)pow(10, 3);
iResult = iResult + iArray[2] * (int)pow(10, 2);
iResult = iResult + iArray[1] * (int)pow(10, 1);
iResult = iResult + iArray[7];
*piInt = iResult;
}
void main()
{
int i = 12345678;
ProcessInt(&i);
printf("加密后的数据是:%d\n", i);
}