/*本問題的關鍵是如何交換ASCII的二進制位,下面提供簡短演算法,並附上VC++6.0環境下的運行結果截圖。
*/
#include<stdio.h>
charswapbit(charc){
chari,num=0,ch[8];
for(i=0;i<8;i++){
ch[i]=c&1;
c=(c>>1);
}
for(i=0;i<8;i++){
num=2*num+ch[i];
}
returnnum;
}
intmain(){
charch;
for(ch='A';ch<='Z';ch++){
printf("%c=%X:%X ",ch,ch,0XFF&swapbit(ch));
}
return0;
}
⑵ 求祖沖之(zuc)密碼演算法演算法加密C語言實現代碼。
這么久沒人答,我都弄懂了。祖沖之演算法分3個演算法ZUC是祖沖之演算法的核心,僅產生密鍵流KS。供EEA3和EIA3調用。EEA3是加密演算法,用KS捆綁上用戶的密鑰,加密用戶數據D,變成密文。相當於國際上的RSA、DES、AES演算法。作用是對稱的加密解密演算法EIA3是數據完整性演算法,MAC的一種。捆綁上用戶的密鑰,結合KS,生成散列值。相當於國際上的HMAC結合MD5,SHA1的用法。用於密碼授權值的生成和保存。
⑶ 使用c語言實現對稱加密演算法、非對稱加密演算法、HASH演算法,誰來提供個思路阿
網路找找
有RSA演算法,MD5演算法,維尼格演算法
這些演算法都很好找啊,我空間裡面就有一篇RSA的
網路搜索
這些代碼本來就難懂,涉及到數學的東西也很多
據說IBM公司DES加密的源代碼公布了十幾年後才有人弄懂
⑷ 利用對稱加密演算法對「1234567進行加密,並進行解密
#include<iostream.h> //DES加密演算法C語言實現
class SubKey{ //定義子密鑰為一個類
public:
int key[8][6];
}subkey[16]; //定義子密鑰對象數組
class DES{
int encipher_decipher; //判斷加密還是解密
int key_in[8][8]; //用戶原始輸入的64位二進制數
int key_out[8][7]; //除去每行的最後一位校驗位
int c0_d0[8][7]; //存儲經PC-1轉換後的56位數據
int c0[4][7],d0[4][7]; //分別存儲c0,d0
int text[8][8]; //64位明文
int text_ip[8][8]; //經IP轉換過後的明文
int A[4][8],B[4][8]; //A,B分別存儲經IP轉換過後明文的兩部分,便於交換
int temp[8][6]; //存儲經擴展置換後的48位二進制值
int temp1[8][6]; //存儲和子密鑰異或後的結果
int s_result[8][4]; //存儲經S變換後的32位值
int text_p[8][4]; //經P置換後的32位結果
int secret_ip[8][8]; //經逆IP轉換後的密文
public:
void Key_Putting();
void PC_1();
int function(int,int); //異或
void SubKey_Proction();
void IP_Convert();
void f();
void _IP_Convert();
void Out_secret();
};
void DES::Key_Putting() //得到密鑰中對演算法有用的56位
{
cout<<"請輸入64位的密鑰(8行8列且每行都得有奇數個1):\n";
for(int i=0;i<8;i++)
for(int j=0;j<8;j++){
cin>>key_in[i][j];
if(j!=7) key_out[i][j]=key_in[i][j];
}
}
⑸ 使用C語言實現對稱加密演算法、非對稱加密演算法、HASH演算法,誰來提供個思路阿
看書……
密碼學……
如果你要實現某種既定標準的演算法,比如SHA-1,MD5啥的。請去看相關的標准。都是免費的。
⑹ 如何使用C語言編寫一個文件夾加密器
1.文件夾加密是操作系統才能實現的功能,C語言處理不了,除非調用系統的命令。C語言可以直接加密文件本身。
2.加密,是以某種特殊的演算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。例如對稱演算法亦或加密。
3.什麼是異或演算法
異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。
4.常式:
/*以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語言怎麼排序和加密
不知道你的需求是什麼。
如果是學習的話呢,就自己封裝一下 數據結構上說的那些排序演算法;自己做一個簡單的對稱加密演算法玩玩就行了。
如果是為了工作的話呢,就找封裝好的現成的排序演算法來用就行了。加密演算法,MD5,DES,等等都是非常優秀的演算法,並且網上都有現成的庫,那裡用就OK了
⑻ C語言對稱及可逆加密演算法,急!!!
#include<stdio.h>
#include<string.h>
voidEncode(chars[],charkey[]){
inti,j,k,t,ch;
chartmp[9];
intlen=strlen(key);
for(i=0,j=0;s[i];++i){
t=key[j];
for(k=0;k<8;++k){
tmp[k]=(s[i]&1)^(t&1);
s[i]>>=1;
t>>=1;
}
ch=0;
for(k=7;k>=0;--k)
ch=2*ch+tmp[k];
s[i]=ch;
j=(j+1)%len;
}
}
intmain(){
chars[]="AbcdXYZ2014";
charkey[]="GodKnow";
printf("明文:%s ",s);
Encode(s,key);
printf("密文: %s ",s);
Encode(s,key);
printf("明文:%s ",s);
return0;
}
⑼ 如何用C語言實現加強版的凱撒密碼破解!
供參考 解碼只需要一句即可
感興趣自己分析下
#include<stdio.h>
intmain()
{
chars[100];
intk;
inti;
while(~scanf("%s%d",s,&k))
{
k%=26;
for(i=0;s[i];i++)
s[i]=(s[i]-'A'+26-(k+i+1)%26)%26+'A';
printf("%s ",s);
}
return0;
}
⑽ 簡單的對稱數據文件加密c語言程序 課設要用 急求大神
#include <sdtio.h>
int encryption(char byCode)
{
char byTsCode;
__asm xor eax,eax
__asm mov al,byCode
__asm xor al,0xe8
__asm byTsCode,al
return byTsCode
}
int main()
{
char* stDecode[8+1]="password\n";
printf("%s",stDecode);
int i;
for(i=0,i<(8+1),i++)
{stDecode[i]=(char)encryption(stDecode[i]);}
printf("%s",stDecode);
for(i=0,i<(8+1),i++)
{stDecode[i]=(char)encryption(stDecode[i]);}
printf("%s",stDecode);
retrin 0;
}