#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *fi,*fo
char ps[20],txt1[1024],txt2[1024]
int plen,ps1[20]
int i,j,k
void main(){
printf("password? ")
scanf("%s",ps)
plen=strlen(ps)
printf("PASSWORD is %s in length of %d, separated into:\n",ps,plen)
for(i=0i<pleni++){ps1[i]=ps[i]-48printf("%3d",ps1[i])}
fi=fopen("d:\\肆陆datin.txt","ra")
if(fi==NULL)exit(111)
fscanf(fi,"%s\n",txt1)
fclose(fi)
printf("\n\n---TEXT in file d:\\datin.txt before encoding : ---\n%s\n",txt1)
fo=fopen("d:\\datout.txt","wa")
if(fo==NULL)exit(222)
for(j=0j<strlen(txt1)j++){
for(i=0i<pleni++)fprintf(fo,"%c",txt1[ps1[i]-1+j])
j+=plen-1
}
fclose(fo)
fi=fopen("d:\\datout.txt","ra")
fscanf(fi,"%s\n",txt2)
fclose(fi)
printf("\n---TEXT in file d:\\枣陆datout.txt after encoding : ---\n%s",txt2)
printf("\n")
}
/凳雹顷/ contents in datin.txt:
// abcdefghijklmnopqrstuvwxyz1234567890
给你,拆态自己再稍微改造一下吧:#include "stdio.h"
#include "conio.h"
main()
{
int k,i=0
char a[100],b[100]
printf("qing shu ru ni de mi wen \n"旅派源)
gets(a)
printf("qing shu ru mi shi \n")
scanf("羡袜%d",&k)
printf("\n")
do{
b[i]=(char)(a[i]+k)
if(b[i]>122){
b[i]=(char)(b[i]-26)
}
i++
}while(a[i]!='\0')
puts(b)
getch()
}
我大概明白你的意思了,你是说425613是个密文码。你在软件里面设个密码库,1代表度,2代表起,3代表吧,4代表一,5代表去,6代表百。这样子,你选择转换成数字。然后你打了几个字:一起去百度吧。点击生成密文,然后就会生成425613,别人拿到这个数字不知道意思。但你只要通过你的软件,就耐并稿又可以把他还原成一起去百度吧的文字了,是这个意思吧?
这个挺有意思的,不过我也没有现成的代码昌孝。但你可以这样试试,先用一个变量把汉字常用字搞进去存为变量,比如有3000个。然后另外做个小程序(这个程序只使用1次),目的是用随机不重复方式(或许可以用气泡法)生成1-3000随机不重复数字存到数组当中,并把这个数组再次输出到变量中保存,因为数字很多,最好在每个数字之间用逗号或减号之类的格开,以便将来好查找定位。
这样就生成了随机数字代码库。然后你打入一段文字(例如:百度),实际运行时,把这段文字用for循环加mid方式,逐一用instr函数到你的汉字库,找到这个汉字在汉字库中的位置,位置即数字。例如百度的百字instr如果返回130,就代表这个字在你汉字库中的第130个字的位置,那么你就找你的随机数变量库中第130个随机数变量是多少,例如当时生成的是213-1888-1-99-22.............1381 到第130是1381,那么百字的代码就是1381。
这样就生成了1381-128(百度),别人拿到的是1381-128,他不知道代码什么。
将来你想转换成字时,就与上面作相反的 *** 作,即可将1381对应的汉字反推回来。
这个办法也许蔽棚算法很差,也很笨,不过我只能这样帮你了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)