① 置換密碼用C語言怎麼編寫
不明白你的目的…替換密碼?哪裡的密碼?指跨進程保護進行內存讀寫嗎?
② 用C語言編程密碼學的矩陣換位法
矩陣換位法,應該就是指兩個互為逆矩陣的矩陣吧;
假設矩陣 A 乘以矩陣 B 得出一個單位矩陣,那麼這兩個矩陣互為逆矩陣;
原理應該是這樣的;
假設你有明文 T 以及轉換矩陣 A,並且 T 通過 A 轉換出來的密文為 S;
那麼用密文 S 通過 A 的逆矩陣 B 轉換出來的內容,就是明文 T;
矩陣包含的信息量巨大,一般都是二維和三維矩陣就夠用了;
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h> const int MAXSIZE = 100; char *encrypt(char *essay) { int i,j,n,u,v,m,len = strlen(essay); char *result; m = n = (int)sqrt(len); if(m * m < len) ++n; result = (char *)malloc(m * n * sizeof(char) + 1); for(i = 0; i < m; ++i) { for(j = 0; j < n; ++j) { u = n * i + j; v = m * j + i; if(u < len) result[v] = essay[u]; else result[v] = ' '; } } result[m * n] = 0; return result;} int main() { char s[MAXSIZE],*u; printf("輸入明文:\n"); fgets(s,MAXSIZE,stdin); s[strlen(s) - 1] = 0; // 去除尾部的\n u = encrypt(s); printf("密文是:\n%s\n",u); free(u); return 0;}
④ 解密用替換密碼加密過英文文本,演算法或者詳細程式,python,C/C+什麼的都可以
分兩部分:
詞頻統計應該單獨做一個程序,目標是生成一個詞頻表,與一般文章的詞頻表對照,確定替換表時可以人工干預。
替換解密做一個程序,輸入替換表和加密文本,輸出解密文本。
⑤ C語言VC++6.0實現一個置換加密
問個問題,
文件中如果保存以下內容:abcdef。
密鑰輸入:123,自動檢測變成213了,這個是固定變的嗎?輸入234,檢測變成324了???
⑥ 用C++編程實現 替換加密法
#include <iostream.h>
void main()
{
char Code[5]="LOVE";
char *p =new char [4];
int i = 0;
while(Code[i] != '\0')
{
p[i] = Code[i]+3;
cout<<p[i];
i++;
}
cout<<endl;
}
輸出為:ORYH
Press any key to continue
⑦ 急求一個完整的c語言圖像置亂加密演算法!!!
#include"windows.h"
#include"stdio.h"
#include"string.h"
#include"malloc.h"
unsignedchar*pBmpBuf;//讀入圖像數據的指針
unsignedchar*pEnBmpBuf;//加密圖像數據的指針
unsignedchar*pUnBmpBuf;//解密圖像數據的指針
charkey=255;//密鑰
intbmpWidth;//圖像的寬
intbmpHeight;//圖像的高
RGBQUAD*pColorTable;//顏色表指針
intbiBitCount;//圖像類型,每像素位數
boolreadBmp(char*bmpName)
{
//二進制讀方式打開指定的圖像文件
FILE*fp=fopen(bmpName,"rb");
if(fp==0)return0;
//跳過點陣圖文件頭結構BITMAPFILEHEADER
fseek(fp,sizeof(BITMAPFILEHEADER),0);
//定義點陣圖信息頭結構變數,讀取點陣圖信息頭進內存,存放在變數head中
BITMAPINFOHEADERhead;
fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
//獲取圖像寬、高、每像素所佔位數等信息
bmpWidth=head.biWidth;
bmpHeight=head.biHeight;
biBitCount=head.biBitCount;
//定義變數,計算圖像每行像素所佔的位元組數(必須是4的倍數)
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
//灰度圖像有顏色表,且顏色表表項為256
if(biBitCount==8){
//申請顏色表所需要的空間,讀顏色表進內存
pColorTable=newRGBQUAD[256];
fread(pColorTable,sizeof(RGBQUAD),256,fp);
}
//申請點陣圖數據所需要的空間,讀點陣圖數據進內存
pBmpBuf=newunsignedchar[lineByte*bmpHeight];
fread(pBmpBuf,1,lineByte*bmpHeight,fp);
//關閉文件
fclose(fp);
return1;
}
voidencrypt(chark)
{
//加密,奇數位置的像素使用位運算加密,偶數位置像素為原始值
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
pEnBmpBuf=newunsignedchar[lineByte*bmpHeight];
for(inti=0;i<lineByte*bmpHeight;i++)
{
if(i%2==0)
{
pEnBmpBuf[i]=pBmpBuf[i];
}
elsepEnBmpBuf[i]=pBmpBuf[i]^k;
}
}
voinencrypt(chark)
{
//解密
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
pUnBmpBuf=newunsignedchar[lineByte*bmpHeight];
for(inti=0;i<lineByte*bmpHeight;i++)
{
if(i%2==0)
{
pUnBmpBuf[i]=pEnBmpBuf[i];
}
elsepUnBmpBuf[i]=pEnBmpBuf[i]^k;
}
}
boolsaveBmp(char*bmpName,unsignedchar*imgBuf,intwidth,intheight,
intbiBitCount,RGBQUAD*pColorTable)
{
//如果點陣圖數據指針為0,則沒有數據傳入,函數返回
if(!imgBuf)
{printf("error !");return0;}
//顏色表大小,以位元組為單位,灰度圖像顏色表為1024位元組,彩色圖像顏色表大小為0
intcolorTablesize=0;
if(biBitCount==8)
colorTablesize=1024;
//待存儲圖像數據每行位元組數為4的倍數
intlineByte=(width*biBitCount/8+3)/4*4;
//以二進制寫的方式打開文件
FILE*fp=fopen(bmpName,"wb");
if(fp==0)return0;
//申請點陣圖文件頭結構變數,填寫文件頭信息
BITMAPFILEHEADERfileHead;
fileHead.bfType=0x4D42;//bmp類型
//bfSize是圖像文件4個組成部分之和
fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+colorTablesize+lineByte*height;
fileHead.bfReserved1=0;
fileHead.bfReserved2=0;
//bfOffBits是圖像文件前3個部分所需空間之和
fileHead.bfOffBits=54+colorTablesize;
//寫文件頭進文件
fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);
//申請點陣圖信息頭結構變數,填寫信息頭信息
BITMAPINFOHEADERhead;
head.biBitCount=biBitCount;
head.biClrImportant=0;
head.biClrUsed=0;
head.biCompression=0;
head.biHeight=height;
head.biPlanes=1;
head.biSize=40;
head.biSizeImage=lineByte*height;
head.biWidth=width;
head.biXPelsPerMeter=0;
head.biYPelsPerMeter=0;
//寫點陣圖信息頭進內存
fwrite(&head,sizeof(BITMAPINFOHEADER),1,fp);
//如果灰度圖像,有顏色表,寫入文件
if(biBitCount==8)
fwrite(pColorTable,sizeof(RGBQUAD),256,fp);
//寫點陣圖數據進文件
fwrite(imgBuf,height*lineByte,1,fp);
//關閉文件
fclose(fp);
return1;
}
voidmain()
{
charinFileName[90],outFileName1[90],outFileName2[90];
printf("請輸入原始點陣圖文件的文件名:");
scanf("%s",inFileName);
printf("請輸入加密程序產生的新點陣圖文件的文件名:");
scanf("%s",outFileName1);
printf("請輸入解密程序產生的新點陣圖文件的文件名:");
scanf("%s",outFileName2);
//讀入指定BMP文件進內存
readBmp(inFileName);
//輸出圖像的信息
printf("width=%d,height=%d,biBitCount=%d ",bmpWidth,bmpHeight,biBitCount);
//圖像加密
encrypt(key);
//將加密數據存檔
saveBmp(outFileName1,pEnBmpBuf,bmpWidth,bmpHeight,biBitCount,pColorTable);
//圖像解密
unencrypt(key);
//將解密數據存檔
saveBmp(outFileName2,pUnBmpBuf,bmpWidth,bmpHeight,biBitCount,pColorTable);
//清除緩沖區,pBmpBuf和pColorTable是全局變數,在文件讀入時申請的空間
delete[]pBmpBuf;
if(biBitCount==8)
delete[]pColorTable;
}
讀取BMP,使用位運算加密,你也可以自己改
dem數據的話,一般用GDAL庫讀取,加密的思路是類似的,最簡單方法是把奇數位和偶數位的高程值置換一下
⑧ c語言 替換 簡易密碼代換
#include <stdio.h>
void main()
{
int i=0, j=0;
char a[100] = {0};
scanf("%s",a);
while ('\0' != a[i])
{
a[i] += 4;
if (a[i] > 'z')
{
a[i] -= 26;
}
else if (a[i] > 'Z' && a[i] < 'e')
{
a[i] -= 26;
}
++i;
}
printf("%s",a);
}
驗證無問題
⑨ 用C語言或者其他語言編寫替代密碼和置換密碼
給你,自己再稍微改造一下吧:
#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();
}
⑩ C語言寫一個線路加密法或叫換位加密演算法
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
constintMAXSIZE=100;
char*encrypt(char*essay){
inti,j,n,u,v,m,len=strlen(essay);
char*result;
m=n=(int)sqrt(len);
if(m*m<len)++n;
result=(char*)malloc(m*n*sizeof(char)+1);
for(i=0;i<m;++i){
for(j=0;j<n;++j){
u=n*i+j;
v=m*j+i;
if(u<len)result[v]=essay[u];
elseresult[v]='';
}
}
result[m*n]=0;
returnresult;
}
intmain(){
chars[MAXSIZE],*u;
printf("輸入明文: ");
fgets(s,MAXSIZE,stdin);
s[strlen(s)-1]=0;//去除尾部的
u=encrypt(s);
printf("密文是: %s ",u);
free(u);
return0;
}