C 幾種常用的加密方式

2022-02-11 13:51:10 字數 4313 閱讀 9586

一、aes加密演算法

aes演算法基於排列和置換運算。排列是對資料重新進行安排,置換是將乙個資料單元替換為另乙個。aes 使用幾種不同的方法來執行排列和置換運算。

aes是乙個迭代的、對稱金鑰分組的密碼,它可以使用128、192 和 256 位金鑰,並且用 128 位(16位元組)分組加密和解密資料。與公共金鑰密碼使用金鑰對不同,對稱金鑰密碼使用相同的金鑰加密和解密資料。通過分組密碼返回的加密資料的位數與輸入資料相同。迭代加密使用乙個迴圈結構,在該迴圈中重複置換和替換輸入資料。 摘自:互動百科

幾種模式的優缺點對比:

c#**:

using

system;

using

system.collections.generic;

using

system.io;

using

system.linq;

using

system.security.cryptography;

using

system.text;

namespace

pwddemo

;icryptotransform ctransform =rm.createencryptor();

byte resultarray = ctransform.transformfinalblock(toencryptarray, 0

, toencryptarray.length);

return

convert.tobase64string(resultarray);

}//////

aes 解密

/// ///

明文(待解密)

///密文 ///

public

string aesdecrypt(string str, string

key)

;icryptotransform ctransform =rm.createdecryptor();

byte resultarray = ctransform.transformfinalblock(toencryptarray, 0

, toencryptarray.length);

return

encoding.utf8.getstring(resultarray);}}

}

二、des加密演算法

des設計中使用了分組密碼設計的兩個原則:混淆(confusion)和擴散(diffusion),其目的是抗擊敵手對密碼系統的統計分析。混淆是使密文的統計特性與金鑰的取值之間的關係盡可能複雜化,以使金鑰和明文以及密文之間的依賴性對密碼分析者來說是無法利用的。擴散的作用就是將每一位明文的影響盡可能迅速地作用到較多的輸出密文位中,以便在大量的密文中消除明文的統計結構,並且使每一位金鑰的影響盡可能迅速地擴充套件到較多的密文位中,以防對金鑰進行逐段破譯。

c#**:

using

system;

using

system.collections.generic;

using

system.io;

using

system.linq;

using

system.security.cryptography;

using

system.text;

namespace

pwddemo

;//向量

public

static

byte _iv = new

byte ;

//////

des加密操作

/// ///

///public

string desencrypt(string

normaltxt)

//////

des解密操作

/// ///

加密字串

///public

string desdecrypt(string securitytxt)//

解密

catch

descryptoserviceprovider cryptoprovider = new

descryptoserviceprovider();

memorystream ms = new

memorystream(byenc);

cryptostream cst = new

cryptostream(ms, cryptoprovider.createdecryptor(_key, _iv), cryptostreammode.read);

streamreader sr = new

streamreader(cst);

return

sr.readtoend();}}

}

三、rsa加密演算法

rsa是第乙個能同時用於加密和數字簽名的演算法,也易於理解和操作。rsa是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。

c#**:

using

system;

using

system.collections.generic;

using

system.io;

using

system.linq;

using

system.security.cryptography;

using

system.text;

namespace

pwddemo

\\ [, ]", path, publickeyfilename, privatekeyfilename));

}

finally}}

//////

用給定路徑的rsa公鑰檔案加密純文字。

/// ///

要加密的文字

///用於加密的公鑰路徑.

///表示加密資料的64位編碼字串.

public

string encrypt(string plaintext, string

pathtopublickey)

finally}}

//////

decrypts encrypted text given a rsa private key file path.給定路徑的rsa私鑰檔案解密 加密文字

/// ///

加密的密文

///用於加密的私鑰路徑.

///未加密資料的字串

public

string decrypt(string encryptedtext, string

pathtoprivatekey)

finally}}

}}

四、sha加密演算法

sha,全稱securehashalgorithm,是一種資料加密演算法,該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預對映或資訊),並把它們轉化為長度較短、位數固定的輸出序列即雜湊值(也稱為資訊摘要或資訊認證**)的過程。

c#**:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.security.cryptography;

using

system.text;

namespace

pwddemo

public

string sha1encrypt(string

normaltxt)

public

string sha256encrypt(string

normaltxt)

public

string sha384encrypt(string

normaltxt)

public

string sha512encrypt(string

normaltxt)

private

string base64to16(byte

buffer)

return

md_str;}}

}

以上內容大部分摘自網路,**根據網上的改的,簡單測試過。

C 幾種常用的加密方式

aes演算法基於排列和置換運算。排列是對資料重新進行安排,置換是將乙個資料單元替換為另乙個。aes 使用幾種不同的方法來執行排列和置換運算。aes是乙個迭代的 對稱金鑰分組的密碼,它可以使用128 192 和 256 位金鑰,並且用 128 位 16位元組 分組加密和解密資料。與公共金鑰密碼使用金鑰...

開發常用到的幾種加密方式

有時候我們經常會聽到一些加密方式 最常見的就是base64和md5 這裡分享一下平時看到的介紹和心得 1.base64 編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位...

幾種常見的加密方式介紹

密碼學在電腦科學中使用非常廣泛,https就是建立在密碼學基礎之上的一種安全的通訊協議。https早在1994年由網景公司首次提出,而如今在眾多網際網路廠商的推廣之下https已經被廣泛使用在各種大小 中。在完全理解https之前,有必要弄清楚一些密碼學相關的概念,比如 明文 密文 密碼 金鑰 對稱...