『壹』 C語言設計一個用簡單的加密程序,即用字母替換的方式加密,程序運行中發現問題,求解釋。
原因就是char是1個位元組的,你不能超過127(hi,樓上的,不是128哦,是-128~127不要誤人子弟),你到後面的vwxyz已經溢出,所以是亂碼。
我的解決方法就很簡單,就是換成unsigned char 數組,這樣取值范圍增大到(0~255)就可以了,既簡單又不破壞原有的結構
還有
else if(str[i]<'a')
{
str[i]+=26;
}
這句話是廢話,可以刪掉
我修改過的版本
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void EncodeString(unsigned char *str,int key)
{
int length,i;//length為傳入字元串長度,i用作循環計數器
length=strlen(str);
for(i=0;i<length;i++)//對字元串中的每個字元依次進行加密
{
if(isupper(str[i]))//對大寫字母加密
{
str[i]+=key%26;
if(str[i]>'Z')
{
str[i]-=26;
}
}
else if(islower(str[i]))//對小寫字母加密
{
str[i]+=key%26;
if(str[i]>'z')
{
str[i]-=26;
}
}
}
}
void main()
{
unsigned char arr[50],buffer;//arr[50]用來接收字元串信息,buffer用來接收緩沖區中的回車
int key;//key為加密秘鑰
printf("This program encodes messages using a cyclic cipher.\n");
printf("To stop, enter 0 as the key.\n");
while(1)//程序一直運行,直到輸入密鑰0為止
{
printf("Enter the key: ");
scanf("%d",&key);
scanf("%c",&buffer);
if(0==key)
{
break;//輸入密鑰為0,則退出程序
}
printf("Enter a message: ");
scanf("%s",arr);
scanf("%c",&buffer);
EncodeString(arr,key);
printf("Encoded message: %s\n",arr);
}
}
『貳』 寫一個java加密程序
publicclass_Test2
{
publicstaticvoidmain(String[]args)throwsFileNotFoundException,IOException
{
//為了便於理解,所以有的部分為了通俗寫得不夠好
Scannersc=newScanner(System.in);
Stringline=sc.nextLine();
line=encrypt(line);
System.out.println(line);
newFileOutputStream("d:\word.txt").write((line+" ").getBytes());
}
//該方法是將一行數據簡單加密(愷撒加密)
privatestaticStringencrypt(Stringline){
char[]chars=line.toCharArray();
for(inti=0;i<chars.length;i++)
{
//由ASCII碼表得知大寫字母是65-90,小寫字母是97-122
if((chars[i]>=65&&chars[i]<90)||(chars[i]>=97&&chars[i]<122))
{
chars[i]=(char)(chars[i]+1);
}
if(chars[i]==90)
{
chars[i]='a';
}
if(chars[i]==122)
{
chars[i]='A';
}
}
returnnewString(chars);
}
}
『叄』 怎麼用C#編寫一個文件夾加密程序啊緊急!
http://..com/question/5307554.html
如何給文件夾加密?
時間: 2005-06-15 17:48:16 | [<<] [>>]
--------------------------------------------------------------------------------
--
windows下想加密就單獨弄個賬戶把文件夾設成只有自己能訪問,但是管理員還是可以訪問,所以最好就用管理員賬號,其他的帳號不能是管理員。其他的覺得沒有什麼好方法。還是用工具比較可靠
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
NTFS格式下加、解密問題
NTFS是WinNT以上版本支持的一種提供安全性、可靠性的高級文件系統。在Win2000和WinXP中,NTFS還可以提供諸如文件和文件夾許可權、加密、磁碟配額和壓縮這樣的高級功能。
一、加密文件或文件夾
步驟一:打開Windows資源管理器。
步驟二:右鍵單擊要加密的文件或文件夾,然後單擊「屬性」。
步驟三:在「常規」選項卡上,單擊「高級」。選中「加密內容以便保護數據」復選框
在加密過程中還要注意以下五點:
1.要打開「Windows 資源管理器」,請單擊「開始→程序→附件」,然後單擊「Windows 資源管理器」。
2.只可以加密NTFS分區卷上的文件和文件夾,FAT分區卷上的文件和文件夾無效。
3.被壓縮的文件或文件夾也可以加密。如果要加密一個壓縮文件或文件夾,則該文件或文件夾將會被解壓。
4.無法加密標記為「系統」屬性的文件,並且位於systemroot目錄結構中的文件也無法加密。
5.在加密文件夾時,系統將詢問是否要同時加密它的子文件夾。如果選擇是,那它的子文件夾也會被加密,以後所有添加進文件夾中的文件和子文件夾都將在添加時自動加密。
二、解密文件或文件夾
步驟一:打開Windows資源管理器。
步驟二:右鍵單擊加密文件或文件夾,然後單擊「屬性」。
步驟三:在「常規」選項卡上,單擊「高級」。
步驟四:清除「加密內容以便保護數據」復選框。
同樣,我們在使用解密過程中要注意以下問題:
1.要打開「Windows資源管理器」,請單擊「開始→程序→附件」,然後單擊「Windows資源管理器」。
2.在對文件夾解密時,系統將詢問是否要同時將文件夾內的所有文件和子文件夾解密。如果選擇僅解密文件夾,則在要解密文件夾中的加密文件和子文件夾仍保持加密。但是,在已解密文件夾內創立的新文件和文件夾將不會被自動加密。
以上就是使用文件加、解密的方法!而在使用過程中我們也許會遇到以下一些問題,在此作以下說明:
1.高級按鈕不能用
原因:加密文件系統(EFS)只能處理NTFS文件系統卷上的文件和文件夾。如果試圖加密的文件或文件夾在FAT或FAT32卷上,則高級按鈕不會出現在該文件或文件夾的屬性中。
解決方案:
將卷轉換成帶轉換實用程序的NTFS卷。
打開命令提示符。
鍵入:Convert [drive]/fs:ntfs
(drive 是目標驅動器的驅動器號)
2.當打開加密文件時,顯示「拒絕訪問」消息
原因:加密文件系統(EFS)使用公鑰證書對文件加密,與該證書相關的私鑰在本計算機上不可用。
解決方案:
查找合適的證書的私鑰,並使用證書管理單元將私鑰導入計算機並在本機上使用。
3.用戶基於NTFS對文件加密,重裝系統後加密文件無法被訪問的問題的解決方案(注意:重裝Win2000/XP前一定要備份加密用戶的證書):
步驟一:以加密用戶登錄計算機。
步驟二:單擊「開始→運行」,鍵入「mmc」,然後單擊「確定」。
步驟三:在「控制台」菜單上,單擊「添加/刪除管理單元」,然後單擊「添加」。
步驟四:在「單獨管理單元」下,單擊「證書」,然後單擊「添加」。
步驟五:單擊「我的用戶賬戶」,然後單擊「完成」(如圖2,如果你加密用戶不是管理員就不會出現這個窗口,直接到下一步) 。
步驟六:單擊「關閉」,然後單擊「確定」。
步驟七:雙擊「證書——當前用戶」,雙擊「個人」,然後雙擊「證書」。
步驟八:單擊「預期目的」欄中顯示「加密文件」字樣的證書。
步驟九:右鍵單擊該證書,指向「所有任務」,然後單擊「導出」。
步驟十:按照證書導出向導的指示將證書及相關的私鑰以PFX文件格式導出(注意:推薦使用「導出私鑰」方式導出,這樣可以保證證書受密碼保護,以防別人盜用。另外,證書只能保存到你有讀寫許可權的目錄下)。
4.保存好證書
注意將PFX文件保存好。以後重裝系統之後無論在哪個用戶下只要雙擊這個證書文件,導入這個私人證書就可以訪問NTFS系統下由該證書的原用戶加密的文件夾(注意:使用備份恢復功能備份的NTFS分區上的加密文件夾是不能恢復到非NTFS分區的)。
最後要提一下,這個證書還可以實現下述用途:
(1)給予不同用戶訪問加密文件夾的許可權
將我的證書按「導出私鑰」方式導出,將該證書發給需要訪問這個文件夾的本機其他用戶。然後由他登錄,導入該證書,實現對這個文件夾的訪問。
(2)在其也WinXP機器上對用「備份恢復」程序備份的以前的加密文件夾的恢復訪問許可權
將加密文件夾用「備份恢復」程序備份,然後把生成的Backup.bkf連同這個證書拷貝到另外一台WinXP機器上,用「備份恢復」程序將它恢復出來(注意:只能恢復到NTFS分區)。然後導入證書,即可訪問恢復出來的文件了。
Win98加密文件夾四法
一、文件夾屬性法
在「Windows資源管理器」窗口,右鍵單擊要加密的文件夾,單擊「屬性」,選中「隱藏」復選框。在注冊表的「HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL」分支下,將「Checkedvalue」的鍵值設置為數字「0」。以後,即使在「Windows資源管理器」窗口,單擊「查看」菜單中的「文件夾選項」,單擊「查看」選項卡,選中「顯示所有文件」復選鈕,也無法看到具有隱藏屬性的文件夾。
二、「回收站」法
首先確認選中了「顯示所有文件」復選鈕,並且注冊表中「Checkedvalue」的鍵值為「1」。然後,在「Windows資源管理器」窗口,右鍵單擊「C:\RECYCLED」文件夾(這是C盤上「回收站」對應的文件夾),再單擊「屬性」,單擊「常規」選項卡,清除「啟用縮略圖方式查看」和「只讀」復選框,單擊「確定」按鈕。關閉並重新啟動「Windows資源管理器」後,將會看到「C:\RECYCLED」文件夾中有一個desktop.ini文件。把該文件復制到要加密的文件夾中,並把該文件夾設為「只讀」屬性。
三、「文件管理器」法
單擊「開始/運行」,鍵入「winfile」,單擊「確定」按鈕,打開「文件管理器」窗口,單擊「查看」菜單中的「按文件類型」,選中「顯示隱藏/系統文件」復選框,單擊「確定」按鈕。把要加密的文件夾拖到「C:\RECYCLED」文件夾或者其他分區的「RECYCLED」文件夾。這樣,在「我的電腦」或「Windows資源管理器」窗口中就看不到這個文件夾了。
四、設置密碼法
1、打開「資源管理器」,選定要加密或要保護的文件夾(文件目錄),在其中空白處單擊滑鼠右鍵,選擇「自定義文件夾…」選項;
2、在「自定義文件夾」的復選框中,選擇「創建或編輯HTML文檔」,並單擊「下一步」,系統准備啟動HTML編輯器;
3、單擊「下一步」,系統啟動HTML編輯器,自動打開Folder.htt文檔;
4、編輯Folder.htt文檔,搜索「javascript」字元,在下方頂頭輸入以下3行內容:
var pass = prompt("請輸入密碼")
if(pass != "ABC")
{window.location="E:"};
5、保存Folder.htt文檔並退出編輯,選擇「完成」;到此,對文件夾的加密或保護便已完成;
6、加密測試,關閉已打開的所有文檔及文件夾,重新打開「資源管理器」,點擊已加密的文件夾,系統便會提示輸入密碼,輸入正確的密碼(本文設定的密碼為ABC)就可以訪問該文件夾,反之則會轉入E盤而無法訪問,從而保護該文件夾及其中的文檔。
『肆』 寫一個簡單的加密程序
簡單看了下,不是密碼表加密,應該就是字元代替,幫你寫了個函數,核心為switch語句,直接用字元來判斷,假設輸入為T,則將其替換為X存入數組a[100],注意我寫的替換是嚴格按照你給的The Birds name was squawk,包括大小寫。有什麼不理解的就PM我。
#include "stdio.h"
main()
{
char a[100],out,flag;
int i;
printf("please input the words:\n");
for(i=0;(flag=getchar())!='\n';i++){
switch(flag){
case'a':out='H'; break;
case'T':out='X'; break;
case'h':out='M'; break;
case'e':out='S'; break;
case' ':out=' '; break;
case'B':out='K'; break;
case'i':out='B'; break;
case'r':out='Y'; break;
case'd':out='P'; break;
case's':out='O'; break;
case'n':out='Z'; break;
case'm':out='Q'; break;
case'w':out='F'; break;
case'q':out='B'; break;
case'u':out='R'; break;
case'k':out='U'; break;
}
a[i]=out;
}
printf("");
printf("%s",&a);
getchar();
}
『伍』 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語言設計一個簡單的加密解密程序
C語言設計一個簡單的加密解密程序如下:
加密程序代碼:
#include<stdio.h>
main()
{
char
c,filename[20];
FILE
*fp1,*fp2;
printf("請輸入待加密的文件名:\n");
scanf("%s",filename);
fp1=fopen(filename,"r");
fp2=fopen("miwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=c-32;
c=126-c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
解密程序代碼:
#include<stdio.h>
#include<string.h>
main()
{
char
c,filename[20];
char
yanzhengma[20];
FILE
*fp1,*fp2;
printf("請輸入待解密文件名:\n");
scanf("%s",filename);
printf("請輸入驗證碼:\n");
scanf("%s",yanzhengma);
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r");
fp2=fopen("yuanwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=126-c;
c=32+c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
else
{
printf("驗證碼錯誤!請重新輸入:\n");
scanf("%s",filename);
}
}
『柒』 怎樣用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」)後回車,即可完成對文件的加密。文件加密後,可以在記事本中打開該文件查看加密效果。如果想解密,可再次運行該程序並輸入相同文件名。
『捌』 如何製作加密文
下載一個加密程序就可以了,或者你另存為的時候,裡面有個工具,然後安全選項,可以設置密碼