當前位置:首頁 » 密碼管理 » c加密與解密

c加密與解密

發布時間: 2023-06-19 17:39:24

Ⅰ 什麼是文件的加密與解密

我們可以從字面意思分析,文件加密就是給文件進行加密處理,反之就是解密,文件加密的工具有很多,有免費,有的功能多有的功能少,有的操作簡單,有的操作復雜。

下面我就以域之盾為你了解一下文件加密及解密的步驟,你看看合不合你心意。

我們先在電腦上安裝加密工具,然後進入加密工具找到我們想要管理的電腦,進入防護策略,

Ⅱ 如何加密和解密文件

在分區格式為NTFS的硬碟上設置文件加密後,文件夾(或文件)變成綠色,windows系統自動生成密鑰。所以,該密鑰只認設置了文件加密的賬戶,其它賬戶不可以讀取。下面,為你帶來「如何加密和解密文件」,大家一起來看看吧。

一、加密文件或文件夾

步驟一:打開Windows資源管理器。

步驟二:右鍵單擊要加密的文件或文件夾,然後單擊「屬性」。

步驟三:在「常規」選項卡上,單擊「高級」。選中「加密內容以便保護數據」復選框

在加密過程中還要注意以下五點:

1.要打開「Windows 資源管理器」,請單擊「開始→程序→附件」,然後單擊「Windows 資源管理器」。

2.只可以加密NTFS分區卷上的文件和文件夾,FAT分區卷上的文件和文件夾無效。

3.被壓縮的文件或文件夾也可以加密。如果要加密一個壓縮文件或文件夾,則該文件或文件夾將會被解壓,There is a feeling called love。

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,如果你加密用戶不是管理員就不會出現這個窗口,直接到下一步) 。

步驟六:單擊「關閉」,然後單擊「確定」。

步驟七:雙擊「證書──當前用戶」,雙擊「個人」,逗棗然後雙擊「證書」。

步驟八:單擊「預期目的」欄中顯示「加密文件」字樣的證書。

步驟九:右鍵單擊該證書,herve paris,指向「所有任務」,然後單擊「導出」。

步驟十:按照證書導出向導的指示將證書及相關的私鑰以PFX文件格式導出(注意:推薦使用「導出私鑰」方式導出,air max 2009,這樣可以保證證書受密碼保護,以防別人盜用。另外,證書只能保存到你有讀寫許可權的目錄下)。

4.保存好證書

注意將PFX文件保存好。以後重裝系統之後無論在哪個用戶下只要雙擊這個證書文件,導入這個私人證書就可以訪問NTFS系統下由該證書的原用戶加密的文件夾(注意:使用備份恢復功能備份的NTFS分區上的加密文件夾是不能恢復到非NTFS分區的)。

最後要提一下,這個證書還可以實現下述用途:

(1)給予不同用戶訪問加密文件夾的許可權

將我的證書按「導出私鑰」方式導出,將該證書發給需要訪問這個文件夾的本機其他用戶,請你轉載一下吧。然後由他登錄,導入該證書,實現對這個文件夾的訪問。

(2)在其也WinXP機器上對用「備份恢復」程序備份的以前的加密文件夾的恢復訪問許可權

將加密文件夾用「備份恢復」程序備份,然後把生成的Backup.bkf連同這個證書拷貝到另外一台WinXP機器上,用「備份恢復」程序將它恢復出來(注意:只能恢復到NTFS分區)。然後導入證書,即可訪問恢復出來的文件了。


Ⅲ js中常見的數據加密與解密的方法

加密在我們前端的開發中也是經常遇見的。本文只把我們常用的加密方法進行總結。不去糾結加密的具體實現方式(密碼學,太龐大了)。

常見的加密演算法基本分為這幾類,

RSA加密:RSA加密演算法是一種非對稱加密演算法。在公開密鑰加密和電子商業中RSA被廣泛使用。(這才是正經的加密演算法)

非對稱加密演算法:非對稱加密演算法需要兩個密鑰:公開密鑰(publickey:簡稱公鑰)和私有密鑰(privatekey:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。

DES全稱為Data Encryption Standard,即數據加密標准,是一種使用密鑰加密的塊演算法

DES演算法的入口參數有三個:Key、Data、Mode。其中Key為7個位元組共56位,是DES演算法的工作密鑰;Data為8個位元組64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

AES這個標准用來替代原先的DES

DES/AES我們合並在一起介紹其用法和特點

Base64是一種用64個字元來表示任意二進制數據的方法。base64是一種編碼方式而不是加密演算法。只是看上去像是加密而已(嚇唬人)。

Ⅳ 如何用C語言對文件進行加密和解密

對於加密要求不高的完全可以自己定義規則來進行加密。這種加密是很簡單很自由的,例如你在存文件的時候可以將文件中的每個字元都加上一個數,然後讀取該文件的時候再每個字元相應地減去那個數,即可實現就簡單的加密,這樣你儲存的文件看上去就是亂碼了。只是這個規則太簡單,規則你可以自己定,加密與解密對著來就行了。
下面程序用異或操作對文件進行加密和解密
/******************設計思路******************/
//根據用戶輸入的加密/機密密碼,
//每次都拿原文件和密碼等長度的一個字元串和密碼
//對應元素異或進行加密/解密
//另外因為是用異或方法,所以加密和解密就是同一個程序
//即按照同樣的加密即是對文件的解密

#include
#include
#include
#include
#include

charfilename[256];//原文件
charpassword[256];//加密/解密密碼
constcharfilenametemp[]="temp15435255435325432543.temp";//加密/解密中間文件

voidinputpass(char*pass);//密碼輸入以"******"顯示

voidmain(){

FILE*fp;//加密/解密的文件
FILE*fptemp;//加密/解密過程臨時文件
intpwdlen;//密碼長度
inti=0;//計數器
charch=0;//讀入的字元

printf("請輸入要加密/解密的文件名(全路徑名):\n");
gets(filename);
if((fp=fopen(filename,"rb"))==NULL){
printf("找不到文件%s\n",filename);
exit(1);
}//if

printf("請輸入要加密/解密的密碼:\n");
inputpass(password);
pwdlen=strlen(password);
if(pwdlen==0){
printf("密碼不能為空,加密/解密失敗\n");
exit(1);
}//if

fptemp=fopen(filenametemp,"wb");//打開中間文件
while(1){
ch=fgetc(fp);//從原文件讀入一個字元
if(feof(fp)){//已經讀到文件尾
break;//退出循環
}
ch^=password[i++];//對原字元和密碼進行異或操作
fputc(ch,fptemp);//將異或結果寫入中間文件
if(i==pwdlen){//使得原文件每和密碼長度相同的固定長度異或加密
i=0;
}
}//while

fclose(fp);//關閉打開原文件
fclose(fptemp);//關閉打開中間文件

remove(filename);//刪除原文件
rename(filenametemp,filename);//將中間文件重命名為原文件
printf("加密/解密成功\n");//至此加密/解密成功

}

//密碼輸入以"******"顯示
voidinputpass(char*pass){
inti=0;
charc;
while(isprint(c=getch())){
pass[i++]=c;
//printf("*");
}
pass[i]='\0'
printf("\n");
}

Ⅳ 什麼是文件的加密與解密

所謂的文件加密就是對電腦上的一些重要文件進行加密的操作,在現實生活中,我們可以通過一些加密工具來對我們的電腦上的文件進行加密處理,解密就是對之前已經加密過的文件進行解密操作。下面為你詳細的介紹下:

文件加密的操作:

我們可先通過安裝域之盾的管理端和被控端,之後我們進入到主界面,然後我們可以在左側的分組中找到我們想要給文件加密的電腦,然後單擊進入防護策略;

文件的解密操作:

我們可以採取申請解密的操作,比如我的電腦的某個加密文件需要查看不想再加密了,我們可以右鍵單擊找到安全終端,然後找到申請解密,這時信息就會發送到管理端,等待管理員解密就可以了。

java密碼加密與解密

以下兩個類可以很方便的完成字元串的加密和解密

加密 CryptHelper encrypt(password)

解密 CrypHelper decrypt(password)

代碼如下

CryptUtils java

[java]

package gdie lab crypt;

import java io IOException;

import javax crypto Cipher;

import javax crypto KeyGenerator;

import javax crypto SecretKey;

import apache xerces internal impl dv util Base ;

public class CryptUtils {

private static String Algorithm = DES ;

private static byte[] DEFAULT_KEY=new byte[] { };

private static String VALUE_ENCODING= UTF ;

/**

* 生成密鑰

*

* @return byte[] 返回生成的密鑰

* @throws exception

* 扔出異常

*/

public static byte[] getSecretKey() throws Exception {

KeyGenerator keygen = KeyGenerator getInstance(Algorithm)

SecretKey deskey = keygen generateKey()

// if (debug ) System out println ( 生成密鑰 +byte hex (deskey getEncoded

// ()))

return deskey getEncoded()

}

/**

* 將指定的數據根據提供的密鑰進行加密

*

* @param input

* 需要加密的數據

* @param key

* 密鑰

* @return byte[] 加密後的數據

* @throws Exception

*/

public static byte[] encryptData(byte[] input byte[] key) throws Exception {

SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

// if (debug )

// {

// System out println ( 加密前的二進串 +byte hex (input ))

// System out println ( 加密前的字元串 +new String (input ))

//

// }

Cipher c = Cipher getInstance(Algorithm)

c init(Cipher ENCRYPT_MODE deskey)

byte[] cipherByte = c doFinal(input)

// if (debug ) System out println ( 加密後的二進串 +byte hex (cipherByte ))

return cipherByte;

}

public static byte[] encryptData(byte[] input) throws Exception {

return encryptData(input DEFAULT_KEY)

}

/**

* 將給定的已加密的數據通過指定的密鑰進行解密

*

* @param input

* 待解密的數據

* @param key

* 密鑰

* @return byte[] 解密後的數據

* @throws Exception

*/

public static byte[] decryptData(byte[] input byte[] key) throws Exception {

SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

// if (debug ) System out println ( 解密前的信息 +byte hex (input ))

Cipher c = Cipher getInstance(Algorithm)

c init(Cipher DECRYPT_MODE deskey)

byte[] clearByte = c doFinal(input)

// if (debug )

// {

// System out println ( 解密後的二進串 +byte hex (clearByte ))

// System out println ( 解密後的字元串 +(new String (clearByte )))

//

// }

return clearByte;

}

public static byte[] decryptData(byte[] input) throws Exception {

return decryptData(input DEFAULT_KEY)

}

/**

* 位元組碼轉換成 進制字元串

*

* @param byte[] b 輸入要轉換的位元組碼

* @return String 返回轉換後的 進制字元串

*/

public static String byte hex(byte[] bytes) {

StringBuilder hs = new StringBuilder()

for(byte b : bytes)

hs append(String format( % $ X b))

return hs toString()

}

public static byte[] hex byte(String content) {

int l=content length()》 ;

byte[] result=new byte[l];

for(int i= ;i<l;i++) {

int j=i《 ;

String s=content substring(j j+ )

result[i]=Integer valueOf(s ) byteValue()

}

return result;

}

/**

* 將位元組數組轉換為base 編碼字元串

* @param buffer

* @return

*/

public static String bytesToBase (byte[] buffer) {

//BASE Encoder en=new BASE Encoder()

return Base encode(buffer)

// return encoder encode(buffer)

}

/**

* 將base 編碼的字元串解碼為位元組數組

* @param value

* @return

* @throws IOException

*/

public static byte[] base ToBytes(String value) throws IOException {

//return Base decodeToByteArray(value)

// System out println(decoder decodeBuffer(value))

// return decoder decodeBuffer(value)

return Base decode(value)

}

/**

* 加密給定的字元串

* @param value

* @return 加密後的base 字元串

*/

public static String encryptString(String value) {

return encryptString(value DEFAULT_KEY)

}

/**

* 根據給定的密鑰加密字元串

* @param value 待加密的字元串

* @param key 以BASE 形式存在的密鑰

* @return 加密後的base 字元串

* @throws IOException

*/

public static String encryptString(String value String key) throws IOException {

return encryptString(value base ToBytes(key))

}

/**

* 根據給定的密鑰加密字元串

* @param value 待加密的字元串

* @param key 位元組數組形式的密鑰

* @return 加密後的base 字元串

*/

public static String encryptString(String value byte[] key) {

try {

byte[] data=value getBytes(VALUE_ENCODING)

data=CryptUtils encryptData(data key)

return bytesToBase (data)

} catch (Exception e) {

// TODO Auto generated catch block

e printStackTrace()

return null;

}

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @return 明文

*/

public static String decryptString(String value) {

return decryptString(value DEFAULT_KEY)

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @param key base 形式存在的密鑰

* @return 明文

* @throws IOException

*/

public static String decryptString(String value String key) throws IOException {

String s=decryptString(value base ToBytes(key))

return s;

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @param key 位元組數據形式存在的密鑰

* @return 明文

*/

public static String decryptString(String value byte[] key) {

try {

byte[] data=base ToBytes(value)

data=CryptUtils decryptData(data key)

return new String(data VALUE_ENCODING)

}catch(Exception e) {

e printStackTrace()

return null;

}

}

}

package gdie lab crypt;

import java io IOException;

import javax crypto Cipher;

import javax crypto KeyGenerator;

import javax crypto SecretKey;

import apache xerces internal impl dv util Base ;

public class CryptUtils {

private static String Algorithm = DES ;

private static byte[] DEFAULT_KEY=new byte[] { };

private static String VALUE_ENCODING= UTF ;

/**

* 生成密鑰

*

* @return byte[] 返回生成的密鑰

* @throws exception

* 扔出異常

*/

public static byte[] getSecretKey() throws Exception {

KeyGenerator keygen = KeyGenerator getInstance(Algorithm)

SecretKey deskey = keygen generateKey()

// if (debug ) System out println ( 生成密鑰 +byte hex (deskey getEncoded

// ()))

return deskey getEncoded()

}

/**

* 將指定的數據根據提供的密鑰進行加密

*

* @param input

* 需要加密的數據

* @param key

* 密鑰

* @return byte[] 加密後的數據

* @throws Exception

*/

public static byte[] encryptData(byte[] input byte[] key) throws Exception {

SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

// if (debug )

// {

// System out println ( 加密前的二進串 +byte hex (input ))

// System out println ( 加密前的字元串 +new String (input ))

//

// }

Cipher c = Cipher getInstance(Algorithm)

c init(Cipher ENCRYPT_MODE deskey)

byte[] cipherByte = c doFinal(input)

// if (debug ) System out println ( 加密後的二進串 +byte hex (cipherByte ))

return cipherByte;

}

public static byte[] encryptData(byte[] input) throws Exception {

return encryptData(input DEFAULT_KEY)

}

/**

* 將給定的已加密的數據通過指定的密鑰進行解密

*

* @param input

* 待解密的數據

* @param key

* 密鑰

* @return byte[] 解密後的數據

* @throws Exception

*/

public static byte[] decryptData(byte[] input byte[] key) throws Exception {

SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

// if (debug ) System out println ( 解密前的信息 +byte hex (input ))

Cipher c = Cipher getInstance(Algorithm)

c init(Cipher DECRYPT_MODE deskey)

byte[] clearByte = c doFinal(input)

// if (debug )

// {

// System out println ( 解密後的二進串 +byte hex (clearByte ))

// System out println ( 解密後的字元串 +(new String (clearByte )))

//

// }

return clearByte;

}

public static byte[] decryptData(byte[] input) throws Exception {

return decryptData(input DEFAULT_KEY)

}

/**

* 位元組碼轉換成 進制字元串

*

* @param byte[] b 輸入要轉換的位元組碼

* @return String 返回轉換後的 進制字元串

*/

public static String byte hex(byte[] bytes) {

StringBuilder hs = new StringBuilder()

for(byte b : bytes)

hs append(String format( % $ X b))

return hs toString()

}

public static byte[] hex byte(String content) {

int l=content length()》 ;

byte[] result=new byte[l];

for(int i= ;i<l;i++) {

int j=i《 ;

String s=content substring(j j+ )

result[i]=Integer valueOf(s ) byteValue()

}

return result;

}

/**

* 將位元組數組轉換為base 編碼字元串

* @param buffer

* @return

*/

public static String bytesToBase (byte[] buffer) {

//BASE Encoder en=new BASE Encoder()

return Base encode(buffer)

// return encoder encode(buffer)

}

/**

* 將base 編碼的字元串解碼為位元組數組

* @param value

* @return

* @throws IOException

*/

public static byte[] base ToBytes(String value) throws IOException {

//return Base decodeToByteArray(value)

// System out println(decoder decodeBuffer(value))

// return decoder decodeBuffer(value)

return Base decode(value)

}

/**

* 加密給定的字元串

* @param value

* @return 加密後的base 字元串

*/

public static String encryptString(String value) {

return encryptString(value DEFAULT_KEY)

}

/**

* 根據給定的密鑰加密字元串

* @param value 待加密的字元串

* @param key 以BASE 形式存在的密鑰

* @return 加密後的base 字元串

* @throws IOException

*/

public static String encryptString(String value String key) throws IOException {

return encryptString(value base ToBytes(key))

}

/**

* 根據給定的密鑰加密字元串

* @param value 待加密的字元串

* @param key 位元組數組形式的密鑰

* @return 加密後的base 字元串

*/

public static String encryptString(String value byte[] key) {

try {

byte[] data=value getBytes(VALUE_ENCODING)

data=CryptUtils encryptData(data key)

return bytesToBase (data)

} catch (Exception e) {

// TODO Auto generated catch block

e printStackTrace()

return null;

}

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @return 明文

*/

public static String decryptString(String value) {

return decryptString(value DEFAULT_KEY)

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @param key base 形式存在的密鑰

* @return 明文

* @throws IOException

*/

public static String decryptString(String value String key) throws IOException {

String s=decryptString(value base ToBytes(key))

return s;

}

/**

* 解密字元串

* @param value base 形式存在的密文

* @param key 位元組數據形式存在的密鑰

* @return 明文

*/

public static String decryptString(String value byte[] key) {

try {

byte[] data=base ToBytes(value)

data=CryptUtils decryptData(data key)

return new String(data VALUE_ENCODING)

}catch(Exception e) {

e printStackTrace()

return null;

}

}

}

CryptHelper java

[java]

package gdie lab crypt;

import javax crypto Cipher;

import javax crypto SecretKey;

import javax crypto SecretKeyFactory;

import javax crypto spec DESKeySpec;

import javax crypto spec IvParameterSpec;

import springframework util DigestUtils;

public class CryptHelper{

private static String CRYPT_KEY = zhongqian ;

//加密

private static Cipher ecip;

//解密

private static Cipher dcip;

static {

try {

String KEY = DigestUtils md DigestAsHex(CRYPT_KEY getBytes()) toUpperCase()

KEY = KEY substring( )

byte[] bytes = KEY getBytes()

DESKeySpec ks = new DESKeySpec(bytes)

SecretKeyFactory skf = SecretKeyFactory getInstance( DES )

SecretKey sk = skf generateSecret(ks)

IvParameterSpec iv = new IvParameterSpec(bytes)

ecip = Cipher getInstance( DES/CBC/PKCS Padding )

ecip init(Cipher ENCRYPT_MODE sk iv )

dcip = Cipher getInstance( DES/CBC/PKCS Padding )

dcip init(Cipher DECRYPT_MODE sk iv )

}catch(Exception ex) {

ex printStackTrace()

}

}

public static String encrypt(String content) throws Exception {

byte[] bytes = ecip doFinal(content getBytes( ascii ))

return CryptUtils byte hex(bytes)

}

public static String decrypt(String content) throws Exception {

byte[] bytes = CryptUtils hex byte(content)

bytes = dcip doFinal(bytes)

return new String(bytes ascii )

}

//test

public static void main(String[] args) throws Exception {

String password = gly ;

String en = encrypt(password)

System out println(en)

System out println(decrypt(en))

}

}

package gdie lab crypt;

import javax crypto Cipher;

import javax crypto SecretKey;

import javax crypto SecretKeyFactory;

import javax crypto spec DESKeySpec;

import javax crypto spec IvParameterSpec;

import springframework util DigestUtils;

public class CryptHelper{

private static String CRYPT_KEY = zhongqian ;

//加密

private static Cipher ecip;

//解密

private static Cipher dcip;

static {

try {

String KEY = DigestUtils md DigestAsHex(CRYPT_KEY getBytes()) toUpperCase()

KEY = KEY substring( )

byte[] bytes = KEY getBytes()

DESKeySpec ks = new DESKeySpec(bytes)

SecretKeyFactory skf = SecretKeyFactory getInstance( DES )

SecretKey sk = skf generateSecret(ks)

IvParameterSpec iv = new IvParameterSpec(bytes)

ecip = Cipher getInstance( DES/CBC/PKCS Padding )

ecip init(Cipher ENCRYPT_MODE sk iv )

dcip = Cipher getInstance( DES/CBC/PKCS Padding )

dcip init(Cipher DECRYPT_MODE sk iv )

}catch(Exception ex) {

ex printStackTrace()

}

}

public static String encrypt(String content) throws Exception {

byte[] bytes = ecip doFinal(content getBytes( ascii ))

return CryptUtils byte hex(bytes)

}

public static String decrypt(String content) throws Exception {

byte[] bytes = CryptUtils hex byte(content)

bytes = dcip doFinal(bytes)

return new String(bytes ascii )

}

//test

public static void main(String[] args) throws Exception {

String password = gly ;

String en = encrypt(password)

System out println(en)

System out println(decrypt(en))

}

lishixin/Article/program/Java/hx/201311/26449

Ⅶ 為什麼要研究加密技術與解密技術

從信息的本質來看,信息是人類賴以生存的重要資源之一。信息能使人們增加知識,能向人們解釋事物。軍事上誰掌握戰場動態信息流,誰就可能在戰術上取勝。商業上誰掌握商品信息流,誰就可能取得高額利潤。總之,社會的物質和能源都是藉助信息而產生出價值。因此,信息是有價值的,不能隨便讓他人使用。如果一個國家的國防機密被泄露,很可能會導致國家的毀滅。即使是技術開發也應該實行有償信息服務。因此,在計算機系統和資料庫中附加加密和解密技術,實質上就是對信息的保護和封鎖,是為了保護信息所有者和合法使用者的權利。

為防止電腦犯罪,必須有效保存好自己電腦里的信息有效地加密

從信息犯罪的特點來看,加密解密技術也有十分重要的意義。一般來說,從事信息犯罪的人都受過良好的教育,有較高的知識水平,他們了解計算機的構造和工作原理。電腦竊賊凱文•米特尼克利用一台電腦和一部無線電話,屢次破譯成功美國許多大公司和政府國防部門的電腦密碼,自由進入他們的電腦網,輕而易舉地獲得了二萬多個信用卡號碼。在計算機應用領域不斷擴大的情況下,信息犯罪的范圍也越來越廣,而且犯罪後不易留下證據。電腦竊賊盜竊錢財時往往金額巨大,使國家或個人損失慘重。只有強化加密技術,才有希望把損失減到最低程序。因此,加密和解密技術也是防止信息犯罪的必要而有效的措施。

從以上兩個方面看來,加密和解密技術完全是為信息流通中的安全與合法使用服務的。如果說我們的社會正在走向「信息社會」,加密和解密技術就必然是未來電子技術的焦點。

Ⅷ RSA加解密原理

RSA是目前使用最為廣泛的公鑰密碼演算法,公鑰加密也稱為非對稱加密,與對稱加密的最大區別在於加密與解密使用不同的密鑰。

在RSA中,明文、密文和密鑰都是數字,假設公鑰用二元組(E,N)來表示,私鑰用(D,N)來表示,其中E、D、N都是數字,那麼加解密過程可表示如下:

可見,在RSA中,不論加密還是解密,都可歸結為求x的y次冪對m取余問題。

生成RSA密鑰可分成以下4步:

首先准備兩個很大的質數p和q,那麼N = p * q。

L = lcm(p-1, q-1)

由於存在恆等式gcd(a,b) * lcm(a,b) = a * b,求lcm可轉換為求gcd,而求gcd可通過歐幾里德演算法在對數時間內算出。

E是一個比1大、比L小的數,且滿足E與L互質,即有:gcd(E,L)=1, 1 < E < L。gcd(E,L)=1是為了保證後面要求的數字D一定存在。

可不斷地生成[2,L-1]之間的隨機數作為E的候選數,檢查是否滿足條件,直到找出符合要求的E為止。

至此,E和N都已求出,那麼公鑰(E,N)也就得到了。

數D是由數E計算得到的,D、E和L之間滿足關系:E * D mod L = 1, 1 < D < L。

只要D滿足運正上述條件,那麼通過E與N加密的旁並悔內容,就可通過D和N進行解密。

求D也可採用類似求E的方法,不斷產生隨機數去試,直到找出滿足條件的D為止,這樣私鑰(D,N)也准備好了。

為方面說明,這里用較小的數計算。先准備兩個質數,例如,p=17, q=19,那麼N=17*19=323,L=lcd(16,18)=144。

滿足gcd(E,L)=1的數很多,例如5,7,11,13,25等,這里取E=5。

滿足E*D mod L = 1的數也很多,這里取D=29。

到這里,公私鑰都有了,公鑰為(5,323),私蔽信鑰為(29,323),公鑰可任意公開,私鑰則保密。

明文必須是小於N的數,因為加密運算中要求mod N。假設明文是123,用公鑰(5,323)對其加密:

再用私鑰(29,323)對密文225進行解密:

解出的明文與原始明文一致。

Ⅸ 什麼是加密和解密

加密:給數據進行加密碼保護,通常都是打開是輸入密碼,還有隱藏、偽裝等效果。市面上加密類的軟體也很多,可以根據自己的具體需求進行挑選。
解密:解除密碼保護,也就是恢復未加密時的狀態,變成正常的數據。如果不想讓你的文件繼續保持加密效果,那就可以選擇解密,來讓它不再受保護。有的可以臨時解密,使用的時候是解密狀態,關閉後會自動恢復加密狀態這種。

Ⅹ 幾種常用加密手段的加密與解密

一、EFS加密

ESF加密操作:

右鍵單擊需要加密的文件夾,然後選擇「屬性」,在彈出屬性對話框中,選擇「高級」選項卡,然後在彈出的高級屬性對話框中,勾選「加密內容以便保護數據「,然後點擊「確定」按鈕,然後在屬性對話框中點擊「應用按鈕,然後在彈出的確認屬性更改對話框中,選擇「將更改應用於此文件夾、子文件夾和文件」,然後點擊「確定」按鈕,然後在回到的屬性窗口再次點擊「確定「按鈕,系統加密後的文件名稱會變成綠色的,這就說明您的加密成功了。

解密:打開軟體,選擇要解密的文件夾或者文件,然後點擊【數據解密】

熱點內容
jsp訪問不到資料庫資料庫資料庫 發布:2025-02-04 16:41:24 瀏覽:283
歐迪a4哪個配置最值得買 發布:2025-02-04 16:39:08 瀏覽:303
編譯包含調試信息的oat文件 發布:2025-02-04 16:39:07 瀏覽:152
一夢江湖官服怎麼在安卓下載 發布:2025-02-04 16:38:17 瀏覽:857
電腦華為雲空間哪裡密碼設置 發布:2025-02-04 16:22:15 瀏覽:756
sql不重復記錄 發布:2025-02-04 16:21:39 瀏覽:510
硬碟緩存速度 發布:2025-02-04 16:20:51 瀏覽:586
cmc的密碼是什麼意思 發布:2025-02-04 16:16:01 瀏覽:970
ccs編譯找不到匯編程序 發布:2025-02-04 16:15:52 瀏覽:772
安卓如何恢復刪除記錄 發布:2025-02-04 16:12:08 瀏覽:609