加密程序編寫
以下是C 語言編寫一個簡單的加密解密程序。
假設我們想將原始字元串中的每個字元按照 ASCII 碼加上一個固定的偏移量,得到一個加密後的字元串。這個偏移量可以是用戶指定的,也可以是程序自動生成的。下面是加密程序的代碼:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("Enter a string to encrypt: ");
scanf("%s", input);
int offset;
printf("Enter an offset: ");
scanf("%d", &offset);
for (int i = 0; i < strlen(input); i++) {
input[i] += offset;
}
printf("Encrypted string: %s ", input);
return 0;
}
```
這個程序首先提示用戶輸入要加密的字元串和偏移量,然後使用一個 for 循環將字元數組中的每個字元加上偏移量。注意,在 C 語言中,字元可以被當作整數來處理。最後,程序輸出加密後的字元串。
現在,我們來編寫一個解密程序,將加密後的字元串解密回原始字元串。解密程序的代碼如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("Enter a string to decrypt: ");
scanf("%s", input);
int offset;
printf("Enter the offset: ");
scanf("%d", &offset);
for (int i = 0; i < strlen(input); i++) {
input[i] -= offset;
}
printf("Decrypted string: %s ", input);
return 0;
}
```
這個程序與加密程序大致相同,唯一的區別是在 for 循環中將字元數組中的每個字元減去偏移量。這樣,解密程序就可以將加密後的字元串恢復成原始字元串了。
需要注意的是,這種簡單的加密解密方式並不是非常安全,因為它可以被輕易地破解。如果您需要一個更加安全的加密演算法,請使用可靠的加密庫和演算法。
② 利用VB設計一個加密程序
簡單判斷吧
a = "ABCD"'要加密的大寫字母
For i = 1 To 4'循環
b = Asc(Mid(a, i, 1)) + 4'分離字元串為單個
If b > 90 Then b = b - 26'如果大於90
Print Chr(b);'輸出加密後字母
Next'循環結束
③ 寫一個對文本文件加密的程序和一個解密程序
#include <stdlib.h>
#include<stdio.h>
#define x 4//密鑰
/*********定義加密函數**********/
int jiami()
{
FILE *fp1,*fp2; //定義函數指針
char filename[50],ch;
printf("請輸入要加密的文件:\n");
scanf("%s",filename) ;
fp1=fopen(filename,"r");
if(fp1==NULL)
{
printf("\n警告!打開文件時出錯!\n");
return 0;
} //打開文件失敗
// printf("原文件為:\n");
fp2=fopen("jiamihou","w");//新建存放加密後數據的文件jiamihou
if(fp2==NULL)
{
printf("\n警告!打開文件時出錯!\n");
return 0;
}
while(!feof(fp1)) //沒有到達文件尾,繼續讀入字元
{
ch=fgetc(fp1); //正確讀出原文件
ch=ch+x;//凱薩加密法
//putchar(ch);//顯示加密後的文件
fputc(ch,fp2); //將加密後的字元放入文件jiamihou中
}
printf("加密成功!\n");
fclose(fp1);
fclose(fp2);
}
/********定義解密函數*********/
int jiemi()
{
FILE *fp1,*fp2;
char filename[50],ch;
char y;
printf("\n");
printf("請輸入要解密的文件:\n");
scanf("%s",filename) ; //要解密的文件名
fp1=fopen(filename,"r");
if(fp1==NULL)
{
printf("\n警告!打開文件時出錯!\n");
return 0;
}//打開文件失敗
fp2=fopen("jiemihou","w");//新建存放解密後數據的文件jiemihou
if(fp2==NULL)
{
printf("\n警告!打開文件時出錯!\n");
return 0;
}
do
{
printf("請輸入密碼:\n");
scanf("%d",&y) ; //密碼
}while(y!=x);
while(!feof(fp1)) //沒有到達文件尾,繼續讀入字元
{
ch=fgetc(fp1); //正確讀出原文件
ch=ch-y;//凱薩解密法
//putchar(ch);//顯示解密後的文件
fputc(ch,fp2); //將解密後的字元放入文件jiemihou中
}
printf("解密成功!\n");
fclose(fp1);
fclose(fp2);
}
/********定義打開文件********/
int display()
{
FILE *fp;
char filename[50],ch;
printf("\n");
printf("請輸入要打開顯示的文件:\n");
scanf("%s",filename) ; //要顯示的文件名
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("\n警告!打開文件時出錯!\n");
return 0;
}//打開文件失敗
while(!feof(fp)) //沒有到達文件尾,繼續讀入字元
{
ch=fgetc(fp); //正確讀出原文件
putchar(ch);//顯示解密後的文件
}
printf("\n");
fclose(fp);
}
/********主函數*************/
void main()
{
int n;
do
{
printf("操作方式如下:\n");
printf("1為加密操作\n");
printf("2為解密操作\n");
printf("3為顯示操作\n");
printf("0為退出操作\n");
printf("**************************************");
printf("\n請選擇您的操作:\n");
scanf("%d",&n);
switch(n)
{
case 0:
break;
case 1:
printf("\n您選擇了加密操作\n");
jiami();
break;
case 2:
printf("\n您選擇了解密操作\n");
jiemi();
break;
case 3:
printf("您選擇了顯示文件操作\n");
display();
break;
default:
printf("請在0-3之間選擇\n");
}
}while(n!=0);
printf("您選擇了退出操作\n");
system("pause");//系統暫停,輸出「按任意鍵繼續...」.包含在<stdlib.h>中
}
④ c語言編寫的程序,在輸入密碼時,如何加密
前言:當今社會是一個信息社會,你的個人信息和聊天記錄極有可能被別有用心的人時時刻刻監視著,那麼你想不想實現專屬於兩個人或一個小圈子的人在社交軟體上的交流不被任何其他人讀懂呢?
下面就給大家提供一個原理極其簡單程序極其容易實現的C語言文字加密小程序的實現演算法。
在鍵盤上錄入了"今天晚上我不回家吃飯了",將這串字元的ASCLL碼全部加1,列印出來是這樣的"掘晚晤市嫌臣假接湊負綠"。怎麼樣,哈哈哈,是不是看完後丈二和尚摸不著頭腦?
所以,用這種演算法實現對漢字的加密和翻譯絕對隱蔽!漢字在計算機中的編碼比較復雜,一個漢字在Windows 10系統下的CodeBlocks編譯器里佔2個字元的位置,我記得我有做過測試,在Cent OS Linux系統下佔3個字元的位置。
然而不管一個漢字占幾個字元的位置,對每個字元的ASCLL碼做加減乘除的運算和逆運算就可以實現對文字的加密和翻譯。
下面向大家展示一下源代碼(加密演算法為將所有字元的ASCLL碼加1,翻譯演算法為將所有字元的ASCLL碼減1):
頭文件部分:
主函數部分:
下面向大家展示一下加密與翻譯的效果:
思考與提高:僅僅將所有字元的ASCLL碼加1就實現對文字信息的加密了,會不會很容易被破譯呢?請恕我不是密碼學專家,這一點我無法回答,但是直觀感覺這樣加密確實有點簡單。
那麼我們就可以對字元進行多種更為復雜的處理,比如給所有字元加上一個正負變換的數列、給所有字元加上斐波那契數列等。總之,直觀感覺就是越復雜越不容易被破譯。
下面向大家展示一下給所有字元加上一個正負變換的數列的加密演算法的源代碼:
頭文件部分:
主函數部分主要是用來調試的,與上面那個簡單加密演算法的主函數部分相同。
下面向大家展示一下使用這種復雜加密演算法加密與翻譯的效果:
用了加密程序後,畫風是這樣的:
⑤ 怎樣用VB編寫一個文件加密程序
位元組逐位倒排序加密法是以比特為單位的換位加密方法,用VB實現的具體演算法是:
(1) 以二進制模式打開源文件;
(2) 從源文件第I位讀取一個位元組,假設為字母「A」,得到「A」的ASCII值為65;
(3) 將65轉換成八位二進制串為「01000001」;
(4) 將「01000001」按位元組逐位倒排序得另一個八位二進制串「10000010」;
(5) 將「10000010」轉換成十進制再寫回源文件第I位置,完成一個位元組的加密;
(6) 重復(2)、(3)、(4)和(5),直到所有位元組加密結束。
為了使程序模塊化,我們用函數過程ByteToBin完成將位元組型數據轉換成二進制串(其實質就是將十進制數轉換成八位二進制串);用函數過程BinToByte將二進制串轉換成位元組型數據(實質是將八位二進制串轉換成十進制數):用函數過程Reverse將八位二進制串逐位倒排序。具體程序如下:
Function ByteToBin(m As Byte) As String ' 將位元組型數據轉換成八位二進制字元串
Dim c$
c$ = ""
Do While m <> 0
r = m Mod 2
m = m \ 2
c$ = r & c$
Loop
c$ = Right("00000000" & c$, 8)
ByteToBin = c$
End Function
Function Reverse(m As String) As String ' 將八位二進制字元串顛倒順序
Dim i%, x$
x = ""
For i = 1 To 8
x = Mid(m, i, 1) & x
Next i
Reverse = x
End Function
Function BinToByte(m As String) As Byte ' 將八位二進制串轉換成十進制
Dim x As String * 1, y%, z%
z = 0
For i = 1 To 8
x = Mid(m, i, 1)
y = x * 2 ^ (8 - i)
z = z + y
Next i
BinToByte = z
End Function
Private Sub Command1_Click()
Dim x As Byte, i%, fname$
fname = InputBox("請輸入要加密的文件名!注意加上路徑名:")
If Dir(fname) = "" Then
MsgBox "文件不存在!"
Exit Sub
End If
Open fname For Binary As #1 ' 以二進制訪問模式打開待加悔穗扒密文件
For i = 1 To LOF(1) ' LOF函數是求文件長度的內部函數
Get #1, i, x ' 取出第i個位元組
x = BinToByte(Reverse(ByteToBin(x))) ' 這里調用了三個自定義函數
Put #1, i, x ' 將加密後的這個位元組寫回到文件原位置
Next i
Close
MsgBox "任務完成!"
End Sub
本例可以完成對任意文件的加密與解密,對同一文件作第一次處理為加密,第二次處理為解族搭密。要調試本程序,碧昌可用記事本在C盤根目錄下任意建立一個文本文件(假設為文件名為aaa.txt),其中的內容任意(可以包括字母、漢字、數字、回車符、換行符等)。運行本程序後,在輸入文件名的對話框中輸入文件名(如:「C:\aaa.txt」)後回車,即可完成對文件的加密。文件加密後,可以在記事本中打開該文件查看加密效果。如果想解密,可再次運行該程序並輸入相同文件名。