数据加密中关于数位的问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 12:48:25
今天C语言的作业是编一个程序对一个小于8位的数据进行加密.我编写完后发现,无论我输入多少位数(小于8位),输出的结果都是一个8位数.
我想,应该能实现输入几位就输出几位的吧.那么该如何实现呢?我编写的代码在下面,请求指教.编写中不规范的地方还请指教.谢谢
#include<stdio.h>
void main()
{
int qian,hou,i,j,d,num[8];//qian加密前数据,hou加密后数据,i和j控制循环,d用于交换数据,num[8]保存数位上的数
printf("请输入原数据:\n");
scanf("%d",&qian);
//将原始数据各数位数字拆分出来,倒序后保存到数组中
for(i=0,j=1;i<8;i++,j=j*10)
{
num[i]=qian%(j*10)/j;
}
//每个元素加5后除以10取余
for(i=0;i<8;i++)
{
num[i]=(num[i]+5)%10;
}
//数组第一位和最后一位交换
d=num[0];
num[0]=num[7];
num[7]=d;
//把数组中的元素还原为一个数
for(hou=0,i=0,j=1;i<8;i++,j=j*10)
{
hou+=num[7-i]*j;
}
//输出加密后的数据
printf("加密后的数据为:\n%d\n",hou);
}

这种问题比较困难,除非你保存数据的长度,但这样子也会增加数据长度。

据我所致,很多加密算法都是采用对齐的方式的,位数不足时使用0来补足。
象AES等