簡體   English   中英

如何在JavaScript中加密字符串並在C#中解密該字符串

[英]How can I encrypt a string in JavaScript and decrypt that string in C#

我之前已經看到過這個問題,但在這些情況下,海報想要在面向公眾的網站上加密某些內容(通常是網址),而且回復主要是“不要!”。 然而,在我的情況下,JavaScript將存儲在非公共內部系統中,所以我認為我有更多的余地。 類似問題的一個例子是: 如何在javascript中加密url並在c#中解密 - 並且答案實際上沒有回答問題。

我的“JavaScript”實際上是“SuiteScript”,其定義為“SuiteScript是一種基於JavaScript的API,可讓開發人員擴展NetSuite”,其中NetSuite是托管的CRM軟件包,因此用於加密我的字符串的任何編碼都將是隱藏給每個人,除了我公司的員工(因此被認為安全隱藏)。

我想做的是:

  1. 生成一個查詢字符串(例如userid = guidValue&firstName = stringValue&company = stringValue&...),
  2. 使用安全方法加密(例如AES256,RSA,無論有人認為這是安全的),
  3. 在我的基於C#的網站上調用網頁,在網址中傳遞此字符串(例如mysite.com/mypage.aspx?encStr=encryptedString)
  4. 讓C#頁面解密它,分離名稱/值對並處理它們。

我已經google了搜索stackoverflow,但沒有發現任何文章或答案,提供了兩種技術都可以使用的加密方法的明確說明。 有人有這樣的指示嗎?

對稱

最簡單的方法是使用庫作為Stanford Javascript加密庫來實現標准(在本例中為AES)並在C#中使用相同的密碼(通過AesManagedAesCryptoServiceProvider )。

您將獲得一個對稱密碼,但幾乎不會有一個參數(密鑰)設置為兩個庫工作。

不對稱

您也可以使用非對稱(公鑰)密碼。 獲取javascript代碼的攻擊者可以將精心設計的請求發送到您的服務器,但無法攔截其他請求。

在javascript中有一個RSA實現, RSACryptoServiceProvider類在.Net中提供支持

Code項目中提供了一個完整的示例,包括javascript lib中RSA的路徑以支持填充(在使用.Net實現時是必需的)

注意

這兩種解決方案本身都很容易重放(攻擊者攔截一個字符串並稍后將其發送回服務器 - 可能多次)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM