簡體   English   中英

從服務器加密,在客戶端解密(但不在客戶端加密)?

[英]Encrypt from server, decrypt on client (but not encrypt on client)?

我的服務器是否可以提供一種可以在客戶端上解密但不能在客戶端上重新加密的加密字符串? 我知道這有點倒退……這就是我的需求。

我有一個需要針對我們的遠程服務器激活的軟件密鑰。 服務器需要向客戶端提供“您處於活動狀態”並包含諸如有效日期,許可證數量等信息。但是,我需要防止它被輕易篡改以增加許可證計數或日期(即,使用在解編譯的二進制文件中找到的鍵或w / e,使用新日期重新加密值)。

是否可以使用公鑰/私鑰? 或者哈希?

編輯

或者,服務器是否可以提供一個客戶端可以驗證的哈希值,而該哈希值實際上是來自服務器的,而無需賦予客戶端自己欺騙或生成哈希值的能力?

提前致謝。

公鑰/私鑰加密應該做你需要的。 散列是一種功能。 一個好的哈希函數將使其無法檢索原始值。

在這種情況下,服務器具有公共/專用密鑰對,而客戶端具有公共/專用密鑰對。 服務器的公鑰嵌入到客戶端中,服務器也具有客戶端的公鑰。 服務器現在可以使用它的私鑰和客戶端的公鑰來加密您的有效負載。 當客戶端想要解密有效負載時,它使用它的私鑰和服務器的公鑰。 如果不訪問服務器的私鑰,客戶端無法重新加密數據。

http://en.wikipedia.org/wiki/Public-key_cryptography-有關所有操作方式的解釋

http://msdn.microsoft.com/en-us/library/e970bs09.aspx - 作為.Net類的起點,使其更容易

當然。 使用非對稱密鑰算法,例如RSA。 兩個密鑰都需要從明文到明文; 一個將加密,另一個將解密。 您不能使用加密時使用的相同密鑰解密,反之亦然。 因此,客戶端無法獲得密文,解密,然后使用它所擁有的任何信息來提供相同的密文。

但是,非對稱密鑰算法在加密和解密密鑰用於加密之前不會區分加密密鑰和解密密鑰。 他們只要求使用另一個密鑰來解密由第一個密鑰加密的消息。 因此,理論上,您的客戶端可以使用其“解密”密鑰“重新加密”消息,該密鑰可由服務器使用其“加密密鑰”進行解密。 我不知道會禁止這種算法的算法; 你只需要通過省略任何方式將解密密鑰用於除解密之外的任何方式,將其構建到通信庫中。

暫無
暫無

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

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