溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用RSA證書加解密敏感數(shù)據(jù)

發(fā)布時間:2021-12-31 17:21:15 來源:億速云 閱讀:235 作者:柒染 欄目:數(shù)據(jù)安全

如何利用RSA證書加解密敏感數(shù)據(jù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

RSA算法的描述中,文章利用makecert工具生成的生成的MyTestCert證書舉行加密解密,這個證書具有RSA算法1024位的密鑰對。

Figure 12. RSA加密解密過程如下:

1、 生成證書、發(fā)放證書

證書利用前面“利用makecert工具獲得”章節(jié)生成的MyTestCert,當然也能夠是從商業(yè)CA獲得的證書。你獲得的證書該當是含有公鑰和私鑰的全面證書,等閑是pfx形式的證書。要接逝步柢數(shù)據(jù),必需把你的公鑰發(fā)放給加密數(shù)據(jù)的加密方,加密方利用你的公鑰加密數(shù)據(jù)。證書要么以pfx形式存在,要么被導入到證書存儲區(qū)。

萬一你的證書存在于證書存儲區(qū)能夠穿越證書管教扼制臺供給的證書導出功能導出只含有公鑰的cer證書。萬一證書以pfx證書文件形式存在,能夠穿越代碼讀取證書然后導出為只含公鑰的cer證書。

2、 字符串明文轉(zhuǎn)成某一代碼頁對應的編碼字節(jié)流

待加密的數(shù)據(jù)可能有兩種形式,一種是二進制的數(shù)據(jù),本身即便一組字節(jié)流,這么的數(shù)據(jù)能夠跳過這一步,直接進去加密環(huán)節(jié)。還有一種情形是字符串數(shù)據(jù),字符串中同樣的字符利用不同的代碼頁會生成不同的字節(jié)碼,因而從字符串到字節(jié)流的轉(zhuǎn)換是必需指定利用何種編碼的。在解密爾后,要從字節(jié)流通換到字符串即將利用雷同的代碼頁解碼,否則就會揭示亂碼。

//保留明文文件的字節(jié)數(shù)組

Byte[] plainTextByte = Encoding.UTF8.GetBytes(&ldquohttp://www.9tishop.info/lianxiwomen/545.htmlhttp://www.damuge.info/gongsi/627.html;RSA證書對敏感數(shù)據(jù)舉行加密http://www.myfo4.info/lianxiwomen/627.html!”);

這里用utf8代碼頁對明文舉行編碼,把明文字符串轉(zhuǎn)成字節(jié)流。

3、 加密壟斷

//從只包括公鑰的證書文件載入證書

X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:/Samples/PartnerAEncryptMsg/MyTestCert.cer");

//從cer證書中獲得含公鑰的RSACryptoServiceProvider

RSACryptoServiceProvidermyRSACryptoServiceProvider = (RSACryptoServiceProvider)myX509Certificate2.PublicKey.Key;

//利用RSACryptoServiceProvider把明文字節(jié)流加密為密文字節(jié)流

Byte[] Cryptograph = myRSACryptoServiceProvider.Encrypt(plainTextByte,gexinghua.org false);

利用1024為的密鑰加密,原料該當是128字節(jié)(1024位)的byte[]的原始數(shù)據(jù),加密后的數(shù)據(jù)也是128字節(jié)(1024位),萬一明文不足128字節(jié),RSACryptoServiceProvider會積極用隨機數(shù)補足128字節(jié)。

Dotnet的RSA告終有個個性,它定然要在明文中增加一些隨機數(shù),因而明文不能把128字節(jié)占滿,切實測驗,明文最多為117字節(jié),留下的空間用來添補隨機數(shù)。

因而,用統(tǒng)一個密鑰對統(tǒng)一串字符串舉行加密,每次獲得的密文都是不一樣的。

4、 解密壟斷

//從證書文件載入證書,萬一含有私鑰的,必需供給保留證書時設置的密碼

X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:/Samples/PartnerAEncryptMsg/MyTestCert.pfx", "password");

//從證書中獲得含私鑰的RSACryptoServiceProvider

RSACryptoServiceProvidermyRSACryptoServiceProvider = (RSACryptoServiceProvider)myX509Certificate2.PrivateKey;

//利用RSACryptoServiceProvider把密文字節(jié)流解密為明文字節(jié)流

byte[] plaintextByte = myRSACryptoServiceProvider.Decrypt(Cryptograph, false);

解密必需載入含私鑰的pfx證書,必需供給私鑰防御密碼。

5、 從編碼字節(jié)流通成字符串明文

利用加密時批準的同樣的代碼頁utf8把解密后的明文byte[]轉(zhuǎn)成字符串:string Plaintext = Encoding.UTF8.GetString(plaintextByte);

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

rsa
AI